Azzera filtri
Azzera filtri

For loop and matrices w/ different elements?

3 visualizzazioni (ultimi 30 giorni)
I have the followling code which has values calculated that are inputs of two matrices A and B. The inputs are values that are calculated in a for loop of i=1:365 corresponding to 1 degree to 360 degrees. I need each value computed by dividing the matrices at each degree/iteration. Everything else works besides the matrix part. I am not including the portions of my code that calculate the inputs but know they are within the for loop
for i=1:360
%All my stuff getting the inputs of the matrices
A(i)=[1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0
-R12x(i) R12y(i) -R32y(i) R32x(i) 0 0 0 1
0 0 -1 0 1 0 0 0
0 0 0 -1 0 1 0 0
0 0 R23y(i) -R23x(i) -R43y(i) R43x(i) 0 0
0 0 0 0 -1 0 0 0
0 0 0 0 0 -1 1 0]
B(i)=[m2.*A2x(i)
m2.*A2y(i)
I2*a2
m3*A3x(i)
m3*A3y(i)
I3*a3(i)
m4*A4x(i)-F4x(i)
0];
F(i)=A(i).\B(i)
end
  1 Commento
Buster
Buster il 27 Ott 2021
i get the error -"Unable to perform assignment because the left and right sides have a different number of elements"

Accedi per commentare.

Risposta accettata

David Hill
David Hill il 27 Ott 2021
B(i)=[m2.*A2x(i);
m2.*A2y(i);
I2*a2;
m3*A3x(i);
m3*A3y(i);
I3*a3(i);
m4*A4x(i)-F4x(i);
0];%need 8x1 matrix
  5 Commenti
David Hill
David Hill il 27 Ott 2021
Sorry, need to understand your variables. If you need to store all A matrices, you will need to make a 3-dimensional matrix.
A(:,:,i)=[1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0
-R12x(i) R12y(i) -R32y(i) R32x(i) 0 0 0 1
0 0 -1 0 1 0 0 0
0 0 0 -1 0 1 0 0
0 0 R23y(i) -R23x(i) -R43y(i) R43x(i) 0 0
0 0 0 0 -1 0 0 0
0 0 0 0 0 -1 1 0];
B(:,i)=[m2.*A2x(i);m2.*A2y(i);I2*a2;m3*A3x(i);m3*A3y(i);I3*a3(i);m4*A4x(i)-F4x(i);0];
F(:,i)=A(:,:,i)\B(:,i);

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti


Release

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by