For loop inside a vector
1 回表示 (過去 30 日間)
古いコメントを表示
So I have this variable e which stores 14 equations and now I want to use equationsToMatrix with these 14 equations. I can do them individually like this
[A, b] = equationsToMatrix([e(1) == 0, e(2) == 1,e(3) == 0],[v12 v23 v24 v34 v35 v45 v36 v57 v58 v49])
but I want to do it using a for loop inside the vector or something and tried this which gave me a "Illegal use of reserved keyword "for"" error.
[A, b] = equationsToMatrix([
for i=1:14
e(i)==0,
end
], [v12 v23 v24 v34 v35 v45 v36 v57 v58 v49])
I had also tried something like storing the equations in an array like
for i=1:14
equations(i)=e(i)==0
end
But that just gives me a zero vector of 1x14 thinking I want the logical output.
If you want the code for the e's and stuff it's here from the start just FYI
% Define symbols
syms p2 p3 p4 p5 v12 v23 v24 v34 v35 v45 v36 v57 v58 v49
% Define given pressures
p1=300;p6=100;p7=100;p8=100;p9=100;
% Define indices
ind=[12 23 24 34 35 45 36 57 58 49];
% Define d's
d=[.1 .08 .08 .1 .08 .08 .09 .09 .09 .09];
d2=d.^2;
% Define L's
l=[1000 800 800 900 800 800 1000 800 800 1000];
% Find alphas for momentum balances
a=32*0.1.*l./d2;
% Mass Balances
% Node 2
e(1)=d(ind==12)*v12-d(ind==23)*v23-d(ind==24)*v24;
% Node 3
e(2)=d(ind==23)*v23-d(ind==34)*v34-d(ind==35)*v35-d(ind==36)*v36;
% Node 4
e(3)=d(ind==24)*v24+d(ind==34)*v34-d(ind==45)*v45-d(ind==49)*v49;
% Node 5
e(4)=d(ind==35)*v35+d(ind==45)*v45-d(ind==57)*v57-d(ind==58)*v58;
% Momentum Balances
% 12
e(5)=p1-p2-a(ind==12)*v12;
% 23
e(6)=p2-p3-a(ind==23)*v23;
% 24
e(7)=p2-p4-a(ind==24)*v24;
% 34
e(8)=p3-p4-a(ind==34)*v34;
% 35
e(9)=p3-p5-a(ind==35)*v35;
% 36
e(10)=p3-p6-a(ind==36)*v36;
% 45
e(11)=p4-p5-a(ind==45)*v45;
% 49
e(12)=p4-p9-a(ind==49)*v49;
% 57
e(13)=p5-p7-a(ind==57)*v57;
% 58
e(14)=p5-p8-a(ind==58)*v58;
回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Symbolic Math Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!