Multiply vector

I have a MATLAB code that I want to convert it to LabVIEW code, but I am stuck at the expression   
a22=a11.';
    pm(ii)=((a22')*a22)./((a22')*LL*a22);
how can I implement this code in labVIEW? 
Solved!
Go to Solution.
Attachments:
MUSIC %28SubVI%29.vi ‏119 KB
MUSIC.vi ‏49 KB

Hi,
I try to make a simple code to do some matrix manipulation, could you see if it is similar to yours?
Attachments:
Matrix_Manipulation.vi ‏20 KB
Matrix_Manipulation.vi ‏20 KB

Similar Messages

  • Vector (good for storing) and arrays(good for numerical sums, multiplying)

    Hi guys, I am trying to use vectors because I need a variable lenght and store 2D arrays in one coordenate of a vector. That is why I am using vector instead arrays. I can turn the type of variable using "Integer" (instead of "int" as arrays), "Double" (instead of "double") and so on. The problem is that it doesn't allow me to operate, it is very good for storing, but I need to be able to operate, multiplying, sum, etc the elements there are in the coordenates. And I think it is not possible.
    What u think about it? I can only store stuff ion a vector, I cannot operate. Besides I cant turn a data from "Double" to "double", I can either use arrays OR vectors, but not both of them at the same time.
    You think i am wrong?, because I mean in that case, Java is not very useful to do this numerical problem.
    Thanks.
    This is only a class of the program I am doing.
    import java.util.*;
    class SolveDomain {
         int newton_iter = 0, m = 0, work_count = 0;
         double t = 0, dx, dy, dt, start_t=0;
         double[][] v;
    Details obDetails = new Details();
         public double[][] solveDomainMethod(Double vAxn, Double vAyn, Double vBxn, Double vByn, Integer nxn, Integer nyn, double dt, Double error1n, Double error2n, double end_tn, int stepsn, Integer kcn, Double u_n[][], Double v_n[][], Double bc1, Double bc2, Double bc3, Double bc4, double u[][]) {       
         double dx2, dy2, err = 1000000;
         v = new double[nxn+1][nyn+1];
         DoublevAxn, Double vAyn, Double vBxn, Double vByn, Integer nxn, Integer nyn, double dt, Double error1n, Double error2n, double end_tn, int stepsn, Integer kcn, double u_n[][], double v_n[][], Double bc1, Double bc2, Double bc3, Double bc4;
    double k[][] = new double [nxn+1][nyn+1]; double kp[][] = new double [nxn+1][nyn+1];
    double kpp[][] = new double [nxn+1][nyn+1]; double dudx[][] = new double [nxn+1][nyn+1];
    double dudy[][] = new double [nxn+1][nyn+1]; double d2udx2[][] = new double [nxn+1][nyn+1];
    double d2udy2[][] = new double [nxn+1][nyn+1]; double dudt[][] = new double [nxn+1][nyn+1];
    double a[][] = new double [nxn+1][nyn+1]; double b[][] = new double [nxn+1][nyn+1];
    double c[][] = new double [nxn+1][nyn+1]; double d[][] = new double [nxn+1][nyn+1];
    double F[][] = new double [nxn+1][nyn+1]; double A[][] = new double [nxn+1][nyn+1];
    double B[][] = new double [nxn+1][nyn+1]; double C[][] = new double [nxn+1][nyn+1];
    double D[][] = new double [nxn+1][nyn+1]; double E[][] = new double [nxn+1][nyn+1];
    double s[][] = new double[nxn+1][nyn+1];
              KDerivatives1 obK1 = new KDerivatives1();
              KDerivatives2 obK2 = new KDerivatives2();
    UDerivatives obU = new UDerivatives();
              CalcPdeCoefficients obPde = new CalcPdeCoefficients();
              CalcFdCoefficients obFd = new CalcFdCoefficients();
              Gs obGs = new Gs();
    dx = obDetails.seg(vBxn, vAxn, nxn);
    dy = obDetails.seg(vByn, vAyn, nyn);
    dx2 = dx*dx;
    dy2 = dy*dy;
    if (bc1 != -999999999) obDetails.initialiceBCDomainL(dx, dy, vAxn, vAyn, bc1, u);
    if (bc2 != -999999999) obDetails.initialiceBCDomainU(dx, dy, vAxn, vAyn, bc2, u);
    if (bc3 != -999999999) obDetails.initialiceBCDomainR(dx, dy, vAxn, vAyn, bc3, u);
    if (bc4 != -999999999) obDetails.initialiceBCDomainD(dx, dy, vAxn, vAyn, bc4, u);
    obDetails.source(dx, dy, vAxn, vAyn, s);
    do {
    ++ newton_iter;
    if (kcn == 1) { 
              obK1.calc_k(u, k);
         obK1.calc_kp(u, kp);
         obK1.calc_kpp(u, kpp);
              } else {
                   obK2.calc_k(u, k);
              obK2.calc_kp(u, kp);
              obK2.calc_kpp(u, kpp);
                   obU.calc_dudx(u, dx, dudx);
              obU.calc_dudy(u, dy, dudy);
                   obU.calc_d2udx2(u, dx2, d2udx2);
                   obU.calc_d2udy2(u, dy2, d2udy2);
              obU.calc_dudt(u, u_n, dt, dudt);
              obPde.calcPdeCoefficientsa(k, a);
              obPde.calcPdeCoefficientsb(kp, dudx, b);
              obPde.calcPdeCoefficientsc(kp, dudy, c);
              obPde.calcPdeCoefficientsd(kp, kpp, dudx, dudy, d2udx2, d2udy2, d);
              obPde.calcPdeCoefficientsF(k, kp, dudx, dudy, d2udx2, d2udy2, dudt, s, F);
              obFd.calcFdCoefficientsA(a, b, dx, dx2, A);
              obFd.calcFdCoefficientsB(a, b, dx, dx2, B);
              obFd.calcFdCoefficientsC(a, c, dy, dy2, C);
              obFd.calcFdCoefficientsD(a, c, dy, dy2, D);
              obFd.calcFdCoefficientsE(a, d, dx2, dy2, dt, E);
              obGs.gsMethod(v_n, A, B, C, D, E, F, dt, error2n, v);
              m = m + obGs.iter;
              for (int i=1; i < u.length - 1;i++ ) {
                   for (int j=1; j < u[0].length - 1 ;j++ ) {
         u[i][j] = u[i][j] + v[i][j];
    err = 0;
              for (int i=0; i < u.length ;i++ ) {
                   for (int j=0; j < u[0].length ;j++ ) {
                   err = err + Math.pow(v[i][j],2);
              err = Math.sqrt(err);
    while (err > error1n);
         return u;           
    public double[][] rectangleDomainF (Vector vAxvector, Vector vAyvector, Vector vBxvector, Vector vByvector, Vector nxvector, Vector nyvector, Vector error1vector, Vector error2vector, double end_t, int steps, Vector kcvector, double numberdomains, Vector bc1vector, Vector bc2vector, Vector bc3vector, Vector bc4vector) {
                   double u[][] = new double[u.length][u[0].length];
                   double dt = obDetails.seg(end_t, start_t, steps);
                   Vector uvector = new Vector();
                   Vector vvector = new Vector();
         do
    ++work_count;
              t = work_count * dt;
    for (int k = 0; k < numberdomains ; k++) {
         solveDomainMethod((Double)vAxvector.elementAt(k), (Double)vAyvector.elementAt(k), (Double)vBxvector.elementAt(k), (Double)vByvector.elementAt(k), (Integer)nxvector.elementAt(k), (Integer)nyvector.elementAt(k), dt, (Double)error1vector.elementAt(k), (Double)error2vector.elementAt(k), end_t, steps, (Integer)kcvector.elementAt(k), (Double [][]) uvector.elementAt(k), (Double [][]) vvector.elementAt(k), (Double)bc1vector.elementAt(k), (Double)bc2vector.elementAt(k), (Double)bc3vector.elementAt(k), (Double)bc4vector.elementAt(k), u);
                                                           uvector.insertElementAt(u, k);
              vvector.insertElementAt(v, k);
    while (t < end_t);
    return u;

    The only way to, for instance, multiply a Double object by another Double object is to convert them back to primitives, multiply them, and create a new Double instance:
    public Double multiply(Double lhs, Double rhs) {
       return new Double( lhs.doubleValue() * rhs.doubleValue() );
    }This is just an overhead that you have to accept if you want to use collections with primitive type data.
    Coming soon in 1.5 (which is in Beta now and available for download in the usual places) a new feature called auto-boxing will do a lot of this automatically for you. You need to be aware that it's doing exactly the same operations with the same performance overhead; but it does save a lot of typing.
    Thus in 1.5 the above becomes:
    public Double multiply(Double lhs, Double rhs) {
       // Under the hood this is IDENTICAL to the above example
       return lhs * rhs;
    }Now, addressing your post directly:
    Besides I cant turn a data from "Double" to "double"
    Yes you can, as in the first example, the doubleValue() method converts a Double object to a double primitive.
    Java is not very useful to do this numerical problem.
    If you need math performance, you need to use primitives, yes. Yes, that will preclude the use of collections.
    Dave.

  • How to multiply or divide 2 vector of same length and obtain a vector of same length

    Is there any build in VI which could do that?  I am looking for a way to divide 2 array of same length and would give me another array (same length) [1 3] / [2 4] = [1/2 3/4]
    Thx

    All the linear algebra operations are on the "Analyze...Mathematics...Linear Algebra palette" (LabVIEW 7.1 and below).
    If you have LabVIEW LabVIEW 8.0, there is a new matrix data type which will use linear algebra operations directly if you wire them to e.g. a multiply node. Check the online help for details.
    LabVIEW Champion . Do more with less code and in less time .

  • Vector instructions in GCC 4.04

    I am trying to write an optimized routine using 32 bit vector instructions on a v9 sparc. Using the inforamtion below I have been unable to convince gcc 3.4.6 or gcc 4.0.4 to emilt a vector fpadd instruction - it always just emits 2 32 bit add instructions. I can't find any known good sample code to start from so I presume I am doing something silly. Any help would be most appreciated.
    6.54.14 SPARC VIS Built-in Functions
    GCC supports SIMD operations on the SPARC using both the generic vector extensions (see Vector Extensions) as well as built-in functions for the SPARC Visual Instruction Set (VIS). When you use the -mvis switch, the VIS extension is exposed as the following built-in functions:
    typedef int v2si __attribute__ ((vector_size (8)));
    typedef short v4hi __attribute__ ((vector_size (8)));
    typedef short v2hi __attribute__ ((vector_size (4)));
    typedef char v8qi __attribute__ ((vector_size (8)));
    typedef char v4qi __attribute__ ((vector_size (4)));
    void * __builtin_vis_alignaddr (void *, long);
    int64_t __builtin_vis_faligndatadi (int64_t, int64_t);
    v2si __builtin_vis_faligndatav2si (v2si, v2si);
    v4hi __builtin_vis_faligndatav4hi (v4si, v4si);
    v8qi __builtin_vis_faligndatav8qi (v8qi, v8qi);
    v4hi __builtin_vis_fexpand (v4qi);
    v4hi __builtin_vis_fmul8x16 (v4qi, v4hi);
    v4hi __builtin_vis_fmul8x16au (v4qi, v4hi);
    v4hi __builtin_vis_fmul8x16al (v4qi, v4hi);
    v4hi __builtin_vis_fmul8sux16 (v8qi, v4hi);
    v4hi __builtin_vis_fmul8ulx16 (v8qi, v4hi);
    v2si __builtin_vis_fmuld8sux16 (v4qi, v2hi);
    v2si __builtin_vis_fmuld8ulx16 (v4qi, v2hi);
    v4qi __builtin_vis_fpack16 (v4hi);
    v8qi __builtin_vis_fpack32 (v2si, v2si);
    v2hi __builtin_vis_fpackfix (v2si);
    v8qi __builtin_vis_fpmerge (v4qi, v4qi);
    int64_t __builtin_vis_pdist (v8qi, v8qi, int64_t);
    6.49 Using vector instructions through built-in functions
    On some targets, the instruction set contains SIMD vector instructions that operate on multiple values contained in one large register at the same time. For example, on the i386 the MMX, 3DNow! and SSE extensions can be used this way.
    The first step in using these extensions is to provide the necessary data types. This should be done using an appropriate typedef:
    typedef int v4si __attribute__ ((vector_size (16)));
    The int type specifies the base type, while the attribute specifies the vector size for the variable, measured in bytes. For example, the declaration above causes the compiler to set the mode for the v4si type to be 16 bytes wide and divided into int sized units. For a 32-bit int this means a vector of 4 units of 4 bytes, and the corresponding mode of foo will be V4SI.
    The vector_size attribute is only applicable to integral and float scalars, although arrays, pointers, and function return values are allowed in conjunction with this construct.
    All the basic integer types can be used as base types, both as signed and as unsigned: char, short, int, long, long long. In addition, float and double can be used to build floating-point vector types.
    Specifying a combination that is not valid for the current architecture will cause GCC to synthesize the instructions using a narrower mode. For example, if you specify a variable of type V4SI and your architecture does not allow for this specific SIMD type, GCC will produce code that uses 4 SIs.
    The types defined in this manner can be used with a subset of normal C operations. Currently, GCC will allow using the following operators on these types: +, -, *, /, unary minus, ^, |, &, ~, %.
    The operations behave like C++ valarrays. Addition is defined as the addition of the corresponding elements of the operands. For example, in the code below, each of the 4 elements in a will be added to the corresponding 4 elements in b and the resulting vector will be stored in c.
    typedef int v4si __attribute__ ((vector_size (16)));
    v4si a, b, c;
    c = a + b;
    Subtraction, multiplication, division, and the logical operations operate in a similar manner. Likewise, the result of using the unary minus or complement operators on a vector type is a vector whose elements are the negative or complemented values of the corresponding elements in the operand.
    You can declare variables and use them in function calls and returns, as well as in assignments and some casts. You can specify a vector type as a return type for a function. Vector types can also be used as function arguments. It is possible to cast from one vector type to another, provided they are of the same size (in fact, you can also cast vectors to and from other datatypes of the same size).
    You cannot operate between vectors of different lengths or different signedness without a cast.
    A port that supports hardware vector operations, usually provides a set of built-in functions that can be used to operate on vectors. For example, a function to add two vectors and multiply the result by a third could look like this:
    v4si f (v4si a, v4si b, v4si c)
    v4si tmp = __builtin_addv4si (a, b);
    return __builtin_mulv4si (tmp, c);
    }

    I am trying to write an optimized routine using 32 bit vector instructions on a v9 sparc. Using the inforamtion below I have been unable to convince gcc 3.4.6 or gcc 4.0.4 to emilt a vector fpadd instruction - it always just emits 2 32 bit add instructions. I can't find any known good sample code to start from so I presume I am doing something silly. Any help would be most appreciated.
    6.54.14 SPARC VIS Built-in Functions
    GCC supports SIMD operations on the SPARC using both the generic vector extensions (see Vector Extensions) as well as built-in functions for the SPARC Visual Instruction Set (VIS). When you use the -mvis switch, the VIS extension is exposed as the following built-in functions:
    typedef int v2si __attribute__ ((vector_size (8)));
    typedef short v4hi __attribute__ ((vector_size (8)));
    typedef short v2hi __attribute__ ((vector_size (4)));
    typedef char v8qi __attribute__ ((vector_size (8)));
    typedef char v4qi __attribute__ ((vector_size (4)));
    void * __builtin_vis_alignaddr (void *, long);
    int64_t __builtin_vis_faligndatadi (int64_t, int64_t);
    v2si __builtin_vis_faligndatav2si (v2si, v2si);
    v4hi __builtin_vis_faligndatav4hi (v4si, v4si);
    v8qi __builtin_vis_faligndatav8qi (v8qi, v8qi);
    v4hi __builtin_vis_fexpand (v4qi);
    v4hi __builtin_vis_fmul8x16 (v4qi, v4hi);
    v4hi __builtin_vis_fmul8x16au (v4qi, v4hi);
    v4hi __builtin_vis_fmul8x16al (v4qi, v4hi);
    v4hi __builtin_vis_fmul8sux16 (v8qi, v4hi);
    v4hi __builtin_vis_fmul8ulx16 (v8qi, v4hi);
    v2si __builtin_vis_fmuld8sux16 (v4qi, v2hi);
    v2si __builtin_vis_fmuld8ulx16 (v4qi, v2hi);
    v4qi __builtin_vis_fpack16 (v4hi);
    v8qi __builtin_vis_fpack32 (v2si, v2si);
    v2hi __builtin_vis_fpackfix (v2si);
    v8qi __builtin_vis_fpmerge (v4qi, v4qi);
    int64_t __builtin_vis_pdist (v8qi, v8qi, int64_t);
    6.49 Using vector instructions through built-in functions
    On some targets, the instruction set contains SIMD vector instructions that operate on multiple values contained in one large register at the same time. For example, on the i386 the MMX, 3DNow! and SSE extensions can be used this way.
    The first step in using these extensions is to provide the necessary data types. This should be done using an appropriate typedef:
    typedef int v4si __attribute__ ((vector_size (16)));
    The int type specifies the base type, while the attribute specifies the vector size for the variable, measured in bytes. For example, the declaration above causes the compiler to set the mode for the v4si type to be 16 bytes wide and divided into int sized units. For a 32-bit int this means a vector of 4 units of 4 bytes, and the corresponding mode of foo will be V4SI.
    The vector_size attribute is only applicable to integral and float scalars, although arrays, pointers, and function return values are allowed in conjunction with this construct.
    All the basic integer types can be used as base types, both as signed and as unsigned: char, short, int, long, long long. In addition, float and double can be used to build floating-point vector types.
    Specifying a combination that is not valid for the current architecture will cause GCC to synthesize the instructions using a narrower mode. For example, if you specify a variable of type V4SI and your architecture does not allow for this specific SIMD type, GCC will produce code that uses 4 SIs.
    The types defined in this manner can be used with a subset of normal C operations. Currently, GCC will allow using the following operators on these types: +, -, *, /, unary minus, ^, |, &, ~, %.
    The operations behave like C++ valarrays. Addition is defined as the addition of the corresponding elements of the operands. For example, in the code below, each of the 4 elements in a will be added to the corresponding 4 elements in b and the resulting vector will be stored in c.
    typedef int v4si __attribute__ ((vector_size (16)));
    v4si a, b, c;
    c = a + b;
    Subtraction, multiplication, division, and the logical operations operate in a similar manner. Likewise, the result of using the unary minus or complement operators on a vector type is a vector whose elements are the negative or complemented values of the corresponding elements in the operand.
    You can declare variables and use them in function calls and returns, as well as in assignments and some casts. You can specify a vector type as a return type for a function. Vector types can also be used as function arguments. It is possible to cast from one vector type to another, provided they are of the same size (in fact, you can also cast vectors to and from other datatypes of the same size).
    You cannot operate between vectors of different lengths or different signedness without a cast.
    A port that supports hardware vector operations, usually provides a set of built-in functions that can be used to operate on vectors. For example, a function to add two vectors and multiply the result by a third could look like this:
    v4si f (v4si a, v4si b, v4si c)
    v4si tmp = __builtin_addv4si (a, b);
    return __builtin_mulv4si (tmp, c);
    }

  • Reduce file size vector graphics

    When it comes to imported vector graphics are there any methods to decrease the swf's file size as much as possible?
    So far I have:
    - imported an illustrator ai file (strokes 'expanded' in illustrator and unneeded swatches/brushes etc. deleted and with no raster images embedded)
    - exported the file in illustrator as swf and imported that swf into flash
    - imported ai file and breaking it down to flash shapes
    - optimized those shapes as much as possible
    I rather use vector as much as possible. For a banner for examle, I've imported vector images of trees. I couldn't get it below 40 kb so I exported all illustrator files to png files which helped. Can detailed vector images be optimized just as much? Or is it better to use bitmap files when it comes to more detailed graphics? Does it matter if it is a vector images made in flash or a imported vector file even if both have the same number of paths?
    Any other ideas I might try besides the things I've already tried?

    There is a certain threshold when a bitmap can actually be smaller than a detailed vector graphic. Especially when working on small image sizes, bitmaps can often be quite smaller.
    For a vector graphic, you can't do more than reducing the number of vertexes which may result in a poorer graphic.
    With bitmaps, you can do a lot more:
    Keep in mind that bitmaps with an alpha channel use up much more memory than bitmaps without alpha information. So try to reach your goal without using transparent bitmaps - which seems hard in the beginning, but as Flash provides different blending modes, you can, for example use the blending mode "multiply" for a black logo on a white background with just a grayscale bitmap instead of a bitmap with alpha channel information.
    The same is valid for a white logo on a black background: Use the "add" blending mode instead, then.
    I have also written some Photoshop Plugins to reduce the alpha-channel bit-resolution which sometimes gives me the extra 3-4kb I needed. Instead of using 256 shades of alpha, it reduces them to maybe 8 or 16. Alpha-Channels are comressed like GIF/PNG images inside of flash, so having as few different shades of alpha as possible will make images smaller. I even use dithering sometimes for softer alpha areas.
    In some rare cases, you can also gain some bytes if you convert text to vector graphics (pressing CTRL-B twice), but this only works when there's not much text at all. That's because the metric information for text glyphs take up a bit more space then just the shapes. So you can imagine that this may only work if there is just one text element with all different letters. So you won't get much size reduction by converting "abracadabra". But you will get some reduction if you convert "the quick brown fox jumps" into shapes.
    This all can help if you have restrictions like 30kb or even 20kb to create a full animated flash banner.

  • Multiply filter in illustrator with a 2 color job-pdf and print issues?

    Hi,
    Encountering a tricky problem and not sure if its an InDesign fix or an Illustrator fix.
    I am working on a 2 color job—pms color + black on a book cover. The cover needs to seperate into these 2 colors.
    Also, I need to make a high res and lowres pdf that look like the cover to send out to marketing, sales etc.
    WHAT's THE PROBLEM?...
    Well, I am creating a collage with black ink vector graphics on top of the pms background. I created this art in illustrator CS3. it is saved as an .eps file. The illos were done by someone who used a white fill to knock out black areas. There is also a wide 50% grey outline around the illustration.
    I like the idea of the line of the illo being black and the fill being red so that it looks seethrough on the red background. But the 50% grey outline causes a problem...I'd like the 50% outline to blend with the red color, so instead of appearing like there is white in the ink it overprints.
    The only way I could think of (and quickest way) was to apply the multiply filter in illustrator to the vector illo. This seemed to work great.
    I brought the illo into InDesign CS3 where I created my cover layout.
    Looks great, Prints great. Separations appear to be good, although it shows the yellow, cyan, and majenta layer they appear to be blank, so I think it will seperate nicely into 2 plates–PMS + black.
    BUT, when I make a pdf, using "smallest file size" or using "high quality print", the pdf it makes does not show the illustrations in the collage. They are kind of beige and dulled out. The publisher needs pdfs too.
    Does this at all indicate that this job will not print correctly using this multiply filter, or is it all well and good final product wise, but its just an issue making the pdf? I am slightly nervous I am going to send this off to the printer and they will have some issue.
    I am a professional designer of 10 years with lots of print experience, but I have never used multiply in illustrator so I just want to make sure there is no rule against doing this I should know about. Does multiply at all mess with the color separations or is it fine? And how do I get my pdf to come out right? I'm hoping there's some dumb thing I'm forgetting, or a simple fix.
    Thanks for any insight you may have!
    L.

    If you don't feel comfortable using Multiply you might want to communicate with the printer and ask if this is an issue for them to reproduce correctly. Some printers using older rips may have issues with transparency. If you can't speak directly with your printer you could mark up the file or make a PDF to accompany the working file with your comments about what prints at what percentage, and if it should overprint or knockout. Years ago I would get a file with transparency in it and have to make sure the designers intent was clear. This was in some cases due to the designer not understanding blend modes or what he/she wanted overprinting or knocking out in the printed piece. The other way you can confirm the separations are going to rip correctly is to print a PDF out of Indesign and open it in Acrobat pro. Under Advanced>Print Production>Output Preview you can turn on and off separations for the 2 spot colors in question. Because PDF acts as your rip in this case you should be seeing what separations your printer will be printing using your native Indesign file. Some print shops will require you to provide a PDF or a color laser print out for QA of your printed piece when sending files to prepress.
    Hope this is helpful.

  • Using multiply effect on illustrator file with 2 color job?

    Hi,
    Encountering a tricky problem and not sure if its an InDesign fix or an Illustrator fix.
    I am working on a 2 color job—pms color + black on a book cover. The cover needs to seperate into these 2 colors.
    Also, I need to make a high res and lowres pdf that look like the cover to send out to marketing, sales etc.
    WHAT's THE PROBLEM?...
    Well, I am creating a collage with black ink vector graphics on top of the pms background. I created this art in illustrator. it is saved as an .eps file. The illos were done by someone who used a white fill to knock out black areas. There is also a wide 50% grey outline around the illustration.
    I like the idea of the line of the illo being black and the fill being red so that it looks seethrough on the red background. But the 50% grey outline causes a problem...I'd like the 50% outline to blend with the red color, so instead of appearing like there is white in the ink it overprints.
    The only way I could think of (and quickest way) was to apply the multiply filter in illustrator to the vector illo. This seemed to work great.
    I brought the illo into InDesign where I created my cover layout.
    Looks great, Prints great. Separations appear to be good, although it shows the yellow, cyan, and majenta layer they appear to be blank, so I think it will seperate nicely into 2 plates–PMS + black.
    BUT, when I make a pdf, using "smallest file size" or using "high quality print", the pdf it makes does not show the illustrations in the collage. They are kind of beige and dulled out. The publisher needs pdfs too.
    Does this at all indicate that this job will not print correctly using this multiply filter, or is it all well and good final product wise, but its just an issue making the pdf? I am slightly nervous I am going to send this off to the printer and they will have some issue.
    I am a professional designer of 10 years with lots of print experience, but I have never used multiply in illustrator so I just want to make sure there is no rule against doing this I should know about. Does multiply at all mess with the color separations or is it fine? And how do I get my pdf to come out right? I'm hoping there's some dumb thing I'm forgetting, or a simple fix.
    Thanks for any insight you may have!
    L.

    I did figure out after posting this that I was using one .ai file and one .eps file—the .ai was showing up fine in the pdf and the eps was showing up screwy.
    odd thing though, when I just re-exported using pdf/x–1a settings, now both images appear muddy! but fine when I turn "overprint preview" on. I just don't want my publisher to have to tell everybody to turn overprint preview on...they shouldn't have to do that for editors etc, non design people.
    maybe the new "smallest file size" will be fine though since this is a press preset...we'll see.

  • Does rotation matrix keeps perpendicularity of two vectors?

    I know my question is quite silly but let me explain my problem...
    During the execution of my program, I wrote my own "lookAt" function wich takes into parameters two 3D points (eye position and view position) and a up vector. Everything is working great but, at one time, when I need to rotate my whole thing, I get a strange mistake I don't know how to solve :
    I compute my two vectors (up vector and the view one (view - eye)), there I check this two vectors are perpendicular (v1.dot(v2) == 0). Then I multiply my two vectors by my rotation matrix and I get my two new vectors. But, when I check if the two vectors are perpendicular, v1.dot(v2) now equals to something like -x.xxxxxxxxxxxxxxxE-XX, XX like 16 or 17. I know the problem is coming from the precision of my numbers, but does someone knows how I can solve it to conserve the perpendicularity?
    I really need this perpendicularity because I need to compute a new transform Matrix and with my problem, this one is not congruent, so I get an error.
    Thanks!!

    i did the same and had an error too, post you calculation code and i will try to help if i can

  • Rastorized Vector Art Becomes Translucent

    Sometimes I get vector art that appears to be completely normal, and opaque: screenshot 1
    Then I try to convert the file into a rastor image for presentation purposes and this happens:
    If you can see in the first picture, the vector art is all opaque, but in the second image, it has been rasterized, and appears to be set to a "Multiply" transparency. You may also note in Screenshot 1 that the Transparency Tab on the right specifies the vector art as normal. However, if I were to take each piece individually and rasterize it, it would look normal, as such: screenshot 3
    Whether I am saving for web & devices, exporting as a jpeg, or using Object>Rastorize (all together), this problem comes up. However, it only happens on rare occasions, and only in CMYK document color mode. I have rastorized hundreds of such images without any such problem. The graphics in the screenshot were copied directly from a file I was working with, and I was not the original creator of this art, so I don't know the process that occured to create it in the first place. However, the attribute is transferable with the eyedrop tool.
    Anybody have an explanation??

    Thank you, that was the problem. When I select the individual objects, the overprint shows up in the attributes window. Now I'm wondering how does one turn off/on overprint? I found I could dump the attribute, but then I lose my color (and that may be problematic in the future). Is there a better way to turn off the overprint?

  • Converting a gradient from a spot color to a process build, hides vector elements

    I have been using Illustrator for many years and consider myself very familiar with it, but recently ran into a strange issue I have never seen before.
    The background element is a radial gradient with points of 0% to 50% of a spot color. The file came to me as one single layer, with the gradient in question above a vector rectangle. The rectangle shows up fine, however, until I convert the gradient from a spot to a process build at which point the box is no longer visible. The initial issue I found was that the box is beneath the gradient, but my question is why would it be visible as long as the gradient uses a spot and then disappear behind it when converted to a process build?

    Version is CS5.
    Part of what made the issue so confusing is that there are no effects applied. Applying the overprint feature or multiply effect don't effect the outcome either. It's only something that can be fixed by moving the gradient to a layer behind the element which is disappearing. My question is less about how to fix it (I've done that and moved on) and more about why this would happen - it seems to be a strange anomoly.
    In response to the replies involving the method of color conversion:
    I have used all of the methods mentioned and the end result is the same. It is starting to look to me like this is a fluke that happened with this particular file and that it is not something that can be duplicated intentionally.

  • Element-by-element multiplication of a vector with matrix rows

    I want to element-by-element multiply a Vector with the rows of a Matrix ,in the most efficient way. Anybody knows if there is a sub vi for this in LW7.0 ?
    (The Inputs are a Matrix; and a Vector with the same size as Matrix's # of columns ; the output is a Matrix with the same dimension as input Matrix. Every row of the output Matrix is the product of element-by-element multiplication of input vector with the correspondind input Matrix's row )
    Thanks

    (Yes, the 2D linear evaluation is basically the same as the 1D evaluation except for the dimension if the array. NI could merge them into one and make the array input polymorphic with respect to size. )
    I "think" you want a plain multiply (not a polynomial evaluation). You can do it (A) one row at a time or (B) one column at a time, but A might possibly be slightly more efficient. Do all three (including the one in the next message) and race them with your real data! Message Edited by altenbach on 03-14-2005 07:47 AM
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    MatrixTimesVector.gif ‏5 KB

  • Point4D.Multiply inconsistent behaviour with NaN values

    I've noticed some peculiar behaviour with System.Windows.Media.Media3D.Point4d.Mutiply when used with NaN values.
    The following assumes that I expect that 0 * NaN should result in 0. There is an argument against that logic, but that is not the point here.
    I have a 4x4 matrix defined, in the case that it is an Identity matrix and there is a NaN component in the vector, I would like to get some defined vector output where it is possible to calculate the component.
    E.g. (1,2,NaN,4) * (Identity Matrix) = (1,2,NaN,4).
    I was caught out for a while:
    By stepping through using the debugger gives the output I want (1,2,NaN,4).
    But allowing the debug code to run through uninterrupted gives the result (NaN, NaN, Nan, Nan).
    There is a slightly surprising workaround: - using Matrix.IsIdentity seems to trigger the result I want
    If I use the default Matrix constructor instead of a manually created one (normally created elsewhere in code), there is no problem.
    Can anyone explain this inconsistency?
    Simple C# console demo:
    using System;
    using System.Windows.Media.Media3D;
    namespace TestNan
    class Program
    static void Main(string[] args)
    Point4D testPoint = new Point4D(1.0, 2.0, Double.NaN, 4.0);
    Matrix3D testMatrix = new Matrix3D(1.0, 0.0, 0.0, 0.0,
    0.0, 1.0, 0.0, 0.0,
    0.0, 0.0, 1.0, 0.0,
    0.0, 0.0, 0.0, 1.0);
    var testResult1 = Point4D.Multiply(testPoint, testMatrix);
    Console.WriteLine(testResult1.ToString());// NaN,NaN,NaN,NaN
    var b = testMatrix.IsIdentity;
    var testResult2 = Point4D.Multiply(testPoint, testMatrix);
    Console.WriteLine(testResult2.ToString());// 1, 2, NaN, 4
    Console.ReadKey();

    >>Can anyone explain this inconsistency?
    The Matrix3D class has an internal boolean flag that it uses to determine if the matrix is actually an identity matrix and this flag is not set when you create a Matrix3D object using the constructor that takes the 16 double values despite the fact that
    you are actually creating an identity matrix (the flag is then eventually set when you access the IsIdentity property).
    If you use the Matrix3D.Identity static property, the flag will get set to the correct value immediately and the results will be the expected:
    static void Main(string[] args)
    Point4D testPoint = new Point4D(1.0, 2.0, Double.NaN, 4.0);
    Matrix3D testMatrix = Matrix3D.Identity;
    var testResult1 = Point4D.Multiply(testPoint, testMatrix);
    Console.WriteLine(testResult1.ToString());
    var b = testMatrix.IsIdentity;
    var testResult2 = Point4D.Multiply(testPoint, testMatrix);
    Console.WriteLine(testResult2.ToString());// 1, 2, NaN, 4
    Console.ReadKey();
    Hope that helps.
    Please remember to close your threads by marking helpful posts as answer and then start a new thread if you have a new question. Please don't post several questions in the same thread.

  • Use array or vector ?

    I need to store data into a 3D array i.e. abc[128][128][128]. Every item of the array is an object.
    My problem is, if i use 3D array to store the data directly, it is too memory costing and always return OutOfMemoryError!!! Also terribly slow !
    Is it better to use vector of vector instead of 3D array? I mean put the 128 objects into a single array and then put 128 single arrays into a vector, lastly put 128 vectors into a new vector.
    Or otherwise, who has any other good suggestions to store these 128*128*128 objects?

    However, that's small compared to the number ofdistinct objects in that space -- 128^3. So the number
    of objects taken up by the arrays or vectors, is less
    than 1% of the number of objects in the 3D space
    defined by the arrays or vectors.
    Sorry, I don't get what you mean ;)
    Yes, it is 1% of the number of objects in the 3D
    space, but you haven't calculate the 4 bytes int value
    used by the int value itself.We're not talking about ints though, are we? The question was about a 3D space of objects.
    So, if let say array Object definition uses 2 bytes,
    then the RAM needed will be:
    Object definition + int values
    ((128^2 + 128 + 1) * 2) + ((128^3) * 4)
    if you create int[128^3], you will only create:
    128^3 * 4Given that problem statement, the array object definitions take up 33026 bytes, whereas the int values take up 8388608. So the memory used by the array object definitions is still just 1% of the memory used. By switching to a 1D array of length 128^3, you're saving less than 1% of the memory. The 33026 bytes isn't the problem here.
    (((128^2 + 128 + 1) * 2) + ((128^3) * 4)) is a much bigger number than ((128^2 + 128 + 1) * 2).
    Just (128^3 * 4) is a much bigger number than ((128^2 + 128 + 1) * 2).
    But anyway that's not the problem statement anyway. There are 128^3 potential objects created in the heap. That's going to be a lot more than the arrays or vectors used to reference them.
    This is why I think the best solution is to look at the data and see if a better approach can be taken than just using 128^3 buckets.
    Another slow but possible solution is using HashMap.
    To check coordinate 33, 75, 109, you can use:
    map.get(new Integer(33*75*109)] and hope Java garbage
    collector runs pretty fast.I wouldn't advise that, because that would cause conflicts between objects at 33,75,109 and 75,33,109, etc. There would be 3! = 6 possible conflicts. If you want to turn the 3D index into a flat 1D index, then multiply each coordinate by a constant to put each into its own range, e.g., (33,75,109)'s 1D index would be (33 * (128^2)) + (75 * 128) + 109.
    Hopefully that's less than the maximum int value. It may not be.
    This solution works fine only if in vast 128*128*128,
    only few hundreds coordinate x,y,z which actually have
    a value. This way you can store the value only if
    needed.Yes, exactly, if the domain data is sparse, a different approach like this would work better than defining 128^3 data buckets.
    If the data is sparse enough, it might be easier to define a 3DCoordinate object to use as the index into the hashtable, than programmatically creating a 1D index.

  • Question on cutting an image using a vector

    OK, so i have a vector that i want to apply an image to. So i dropped the image into illustrator, and made a clipping mask, but if i go to save it, or print it, it tries to print space where the image is, even though it's only inside the vector outline. Kind of confusing with the wording, see pics, but I just want the vector to cut out of the image, and get rid of the rest of the image.  Is this possible in illustrator?

    btwice,
    You may read this thread:
    http://forums.adobe.com/message/4766224#4766224
    And then there is the destructive deed, with the Clipping Mask selected:
    1) In the Transparency palette/panel dropdown list select anything but Normal (Multiply is fine);
    2) Object>Flatten Transparency, just keep the defaults including 100% Vector;
    3) Shudder.
    And then there is the destructive deed, without a  Clipping Mask:
    1) Select the cropping path, make it Fill/Nostroke, and change its Transparency>Opacity to 0;
    2) Also select the image and Object>Flatten Transparency, just keep the defaults including 100% Vector, Object>Ungroup, and delete the unwanted parts;
    3) Shudder.
    Either should reduce the size to the Bounding Box of the Clipping Path.

  • Need right value to Load/Read Velocity Using Input/Return Vectors

    I have a servo motor with a encoder feedback of ( 4,000 counts per revolution ), maximum velocity of 6,000 rpm ( 100 rps ). I need to create 3 moving profiles with stroke time of 0.25 mm/sec, 1.0 mm/sec, and 25 mm/sec. I would like to use either Load Velocity VI or Load Velocity in RPM VI whichever is easy to set velocity, distance, and read position of my axis. More, I would like to be able to use onboard variables to set distance, velocity, and read position of the axis using input/return vectors, but I don't know how to set the right values. Do I need a conversion or multiplier number to get the right value?
    Any help would be greatly appreciated.
    Carlos D' Garcia.

    Carols –
    There is a simple vi on how to do vector moves at the following link (I also attached the file below):
    http://sine.ni.com/apps/we/niepd_web_display.display_epd4?p_guid=B45EACE3DF9956A4E034080020E74861&p_node=DZ52480&p_source=External
    To have your axes move at different rates, you will have to replace the single ‘Load Velocity in RPM.vi’ that is wired to the Configure Vector Space.flx with three separate Load Velocity RPM.vi’s each with an axis constant (or control) wired to their axis input and the max velocity you want. This way, you will set the maximum velocity for each axis rather than all three at once.
    Best of luck with your project! Let me know if you have further questions with this.
    Marc C
    National Instruments
    Applications Engineer
    Attachments:
    Three-Axis_Vector_Move_with_Position_Monitor.zip ‏29 KB

Maybe you are looking for

  • Nokia 5800 v51

    can't connect to wifi ??  I updated to v 51..and now I can't connect ? anyone have the same problem ? and how can I solve It ?? It worked fine before...

  • Another one of those battery problems...so scared

    Hey all, I know that many people are posting battery problems and I think I have a similar one...I just don't know if apple will listen to me. My 15" mbp shuts down at around 45% charge for no reason. I applied the update that apple provided but to n

  • APP WORLD ICON DISAPPEARED AFTER UPGRADE

    Okay so I have had enough!! This the third time I'm having this issue, i update my black berry app world the icon disappears i uninstall app world and I come here get a link to the former version and redownload but guess what? everytime I do this giv

  • Je n'arrive pas à exporter plusieurs pistes audio sur un même fichier depuis premiere pro CC2014

    je n'arrive pas à exporter plusieurs pistes audio sur un même fichier depuis premiere pro CC2014. Je souhaite le faire avec un codec plug in Prores (mais là aussi rien de prévu) merci pour votre aide

  • ESS service key

    hi all, in ABAP-HR how to see the ESS service keys.. help me at the earliest