Cell calculation and for loop modification

1 回表示 (過去 30 日間)
Mark
Mark 2021 年 11 月 15 日
回答済み: Srivardhan Gadila 2021 年 11 月 18 日
I would like to input my "stacknumber" and input my "theta(45,-45,0 repectively)" and save my value in the cell which is called "QbarStoreArr"
If I input the value of my stacknumber for 1, and input my "theta(45,-45,0 repectively)" in the Matlab Workspace I got the 1x3cell and each cell is a matrics.
But when I input the value of my stacknumber greater than 1 (That is, 2 3 4 5 6.....etc), in the Matlab Workspace I got only the first 3 cell and the rest is empaty space.
I would like to stack my cell result like this picture below(please input the value of my stacknumber=6 and input and input the value of theta 45,-45,0 repectively), how should I modify my code in "foor loop" to get the result I want?
Thanks!!
clc
clear
stackNumber = input('stackNumber = ');
plyNumber=3;
plysym=1;
Total=plyNumber*stackNumber*plysym;
QbarStoreArr = cell(1,Total);
E1=141;
E2=6.7;
G12=3.2;
v12=0.33;
v21 = v12*(E2/E1);
Q11 = E1./(1-v12.*v21);
Q12 =(v12.*E2)./(1-v12.*v21);
Q21 = Q12;
Q22 = E2./(1-v12.*v21);
Q66 = G12;
%========= Stacking
for i =1 : plyNumber
angleArr(1,i) = input(' theta = '); % Enter the plyNumber
QbarStoreArr{i} = QBarFunction(Q11, Q12, Q22, Q66, angleArr(1,i));
end
function [Qbar] = QBarFunction (Q11, Q12, Q22, Q66, x)
c=cosd(x); s = sind(x);
Q_bar_11=Q11.*(c.^4)+Q22.*(s.^4)+2.*(Q12+2.*Q66).*(s.^2).*(c.^2);
Q_bar_12=(Q11+Q22-4.*Q66).*(s.^2).*(c.^2)+Q12.*((c.^4)+(s.^4));
Q_bar_22=Q11.*(s.^4)+Q22.*(c.^4)+2*(Q12+2.*Q66).*(s.^2).*(c.^2);
Q_bar_16=(Q11-Q12-2.*Q66).*(c^3).*(s)-(Q22-Q12-2.*Q66).*(c).*(s.^3);
Q_bar_26=(Q11-Q12-2.*Q66).*(c).*(s^3)-(Q22-Q12-2.*Q66).*(c^3).*(s);
Q_bar_66=(Q11+Q22-2.*Q12-2.*Q66).*(s.^2).*(c.^2)+Q66.*((s^4)+(c^4));
Qbar= [Q_bar_11 Q_bar_12 Q_bar_16; Q_bar_12 Q_bar_22 Q_bar_26; Q_bar_16 Q_bar_26 Q_bar_66];
end

回答 (1 件)

Srivardhan Gadila
Srivardhan Gadila 2021 年 11 月 18 日
In the above code, the size of for loop is depending on the value of the variable "plyNmber", whose value is always 3.
for i = 1:plyNumber
angleArr(1,i) = input(' theta = ');
QbarStoreArr{i} = QBarFunction(Q11, Q12, Q22, Q66, angleArr(1,i));
end
Hence you have to change the above code to depend on the value of the variable "Total" which changes based on the value of the variable "stackNumber"
for i = 1:Total
angleArr(1,i) = input(' theta = ');
QbarStoreArr{i} = QBarFunction(Q11, Q12, Q22, Q66, angleArr(1,i));
end

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by