필터 지우기
필터 지우기

Cell calculation and for loop modification

조회 수: 3 (최근 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 CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by