MATLAB Answers


Matrix dimensions must agree

Asked by Marco
on 6 Jun 2011

[EDIT: 20110606 10:32 CDT - reformat - WDR]

??? Error using ==> times Matrix dimensions must agree.  Error in ==> prop_marcuse at 49
ep = exp(-a*dz/2)*ifft((exp(-i*dz*d/2)).*fip);
Error in ==> lt_amprett at 93
E = prop_marcuse(E,ac,b2,b3,ass,n2,Aeff,k0,dz,dt);
??? Error while evaluating uico

hi guys, i'm new in matlab central so hello to everyone. i've a problem in my program. the program it's about propagation in an optical fiber of a signal qpsk modulated. I can't post the functions here because it would be too long. if someone wants to help please contact me and i will give him all the program folder. i'm so close to the solution but i can't understand where i've to correct something. i think it's right but it doesn't seem. i hope someone will answer me. thanks everybody.


Log in to comment.

2 Answers

Answer by Loginatorist on 6 Jun 2011

Use .* instead of * when you desire element-by-element multiplication. For example,

x = 1:3
y = 4:6


i think i've done correct.when i have an fft i've tu put the ".*" and when i have ifft i can use "*".right?

When needing to multiply (or divide or exponentiate) arrays element-by-element, you always should use .* and ./ and .^.

Log in to comment.

Answer by Walter Roberson
on 6 Jun 2011

You probably need

ep = exp(-a.*dz/2).*ifft((exp(-i.*dz.*d/2)).*fip);

In particular I suspect the dot missing between the exp() term and the ifft() term is the key.


Show 1 older comment

i put the dot but it doesn't change anything.

The first. But using extra usually does not hurt. Unless you know you are wanting to use matrix multiplication (in a mathematical sense) then you should probably use .*

Ah... what is the size of fip, and what is the size of dz and of d ?

Log in to comment.

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Win prizes and improve your MATLAB skills

Play today