Subscripted assignment dimension mismatch
Ältere Kommentare anzeigen
Below is my code. When my program tries to calculate D, it gives me the error as stated in the title. the Varibles N, Eab, den, and V all produce a matrix of 1x47 values. I have tried removing the dot (.) from the equation's multiplication and divisons, but I still get errors (inner matrix dimnesions must agree). Any help is appreciated. Thank you.
row = 0;
col = 0;
for row = 1:1:420
for col = 1:1:420
N = No - No.*exp(-linavg*d);
Eab = E.*(lin./linavg);
D(row,col) = (N.*Eab)./(den.*V);
No = N*exp(-linavg*d);
end
col = col +1;
end
row = row+ 1;
3 Kommentare
per isakson
am 4 Mär. 2020
Bearbeitet: per isakson
am 4 Mär. 2020
What are the statemets
row = 0;
col = 0;
col = col +1;
row = row+ 1;
supposed to do?
Pre-allocate D before entering the for-loops
D = nan(420,420);
Left hand side of
D(row,col) = (N.*Eab)./(den.*V);
is a scalar and the right hand side is a 1x47 vector. That doesn't agree. What do you want to achieve with this statement?
Kira Bruce
am 4 Mär. 2020
Aquatris
am 4 Mär. 2020
Bearbeitet: per isakson
am 4 Mär. 2020
First of you do not need to specify col = col+1. When you define for col = 1:100, the for loop will increment the col variable every iteration
Secondly, do you want D to be a 3D matrix? If so,
D(row,col,1:47) = (N.*Eab)./(den.*V);
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!