How to use root function inside for loop?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I would like to use a for loop to perform the roots command for a cubic function for a range of theta's and phi's and volumes. Then the three-dimensional matrix C should contain all the possible roots from each given entry of theta and phi. I have 7 values for theta, 7 for phi and 5 for volume. The theta and volume are stored along one 'direction' of the C matrix, the phi's along another 'direction' of the C matrix and the roots in the third direction of C. The error I receive is "Subscripted assignment dimension mismatch". and "Assignment has more non-singleton rhs dimensions than non-singleton subscripts" Does anyone have an answer (other options for solving the problem are also welcome)? The code is attached.
Thanks in advance, Antoine
2 Commenti
Jan
il 11 Ago 2017
Please post the complete error message, such that we do not have to guess, in which line the error occurs. How can you get 2 error messages? Matlab stops after the first problem already.
Risposte (2)
Jan
il 12 Ago 2017
Modificato: Jan
il 12 Ago 2017
C(k+5*(i-1),j) is a scalar, but roots([r3(i,j) r2(i,j) r1(i,j) -Volumes(k)]) can be a vector. The error message tells you, that the number of elements on the left and on the right differ. Do you mean:
C(k+5*(i-1), j, :)
% ^ 3rd dimension
or
r = roots([r3(i,j), r2(i,j), r1(i,j), -Volumes(k)]);
C(k+5*(i-1), j, 1:numel(r)) = r;
if there are not 3 roots in all cases. Perhaps you want a cell array instead:
C = cell(7*5,7);
...
C{k+5*(i-1), j} = roots([r3(i,j), r2(i,j), r1(i,j), -Volumes(k)]);
Note: Using commas to separate elements of a vector is safer to reduce ambiguities.
0 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!