dimension error with * operator
Afficher commentaires plus anciens
This line of code: asynch = C1(:)*N(:)*C(:)'/(delta-2) throws an error: Error using * Inner matrix dimensions must agree. That would seem to be right C1 is a 1X100 double and N is a 100x100 double. So I changed the code to T = transpose(C1); asynch = C1(:)*N(:)*T(:)'/(delta-2). This makes T a 100X1 double and the code should run but I get the same error. What's wrong. Thanks
1 commentaire
OCDER
le 28 Sep 2018
synch = C1(:)*C1(:)'/(delta-2)
^
This works because of the transpose operator.
C1(:) = Nx1 vector
C1(:)' = 1xN vector
so C1(:)*C1(:)' works as a (Mx1) * (1xM) = MxM vector (inner dimension agrees)
In your case, you have a matrix N that is 100x100.
N = 100x100 matrix
N(:) = 10000x1 vector
C(:)*N(:) will NOT WORK because it's a (Mx1) * (10000x1) = ????
Réponses (3)
OCDER
le 28 Sep 2018
0 votes
Although N is a 100x100 matrix, when you do N(:), you make it into a 10000x1 vector. Get rid of the "(:)" when you want to proper matrix math.
Pratik Bajaria
le 28 Sep 2018
0 votes
Hello,
Try .* operator. It is the normal matrix multiplication, the one you are trying is doing a Hadamard multiplication.
Regards, Pratik
Douglas Brenner
le 28 Sep 2018
0 votes
Catégories
En savoir plus sur MATLAB dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!