MATLAB循环函数问题

时间:2015-04-19 16:47:42

标签: matlab loops

我正在尝试简化我正在进行的项目的一些计算。我必须计算三种不同孔面积和三种材料类型的三种模型的正应力,应变和位移以及剪切应力,应变。总的来说,我正在计算的每个参数应该有9个值。

我继续在AoP的*上得到错误,当我检查AoP的计算时,它只显示pi值并忽略它应该是第一个p ^ 2值乘以pi乘以25。

这是我的代码:

% Height[m]
h= 0.0045;
%Length o[m]
l=0.0025;
%cross-sectional area [m]
a=h*l;
%Force [N]
f=1000;   
% three pores [m]
p=[0.00150 0.00175 0.00200]
% three materials E used 
E=[ 1.138e12 6.96e10 1.25e-3]
% three materials G used
G=[ 4.20e10 2.630e10 2.4e10]
AoP=25*(pi()*(p)^2)
for p=1:3 E=1:3 G=1:3
    AoP=25*(pi()*(p)^2) 
    A=a-AoP
    %Normal Stress 
    NSTRESS =f/A
    %Normal Strain
    NSTRAIN = NSTRESS/E
    %Normal Displacement 
    NormalDisplacment = NSTRAIN*h
    %Shear stress
    SStress=f/a
    %Shear strain 
    SStrain=SStress/G
    %Shear displacement
    SDisplacement =  SStrain*h
end

disp (NSTRESS)
disp (NSTRAIN)
disp (NormalDisplacment)
disp (SStress)
disp (SStrain)
disp (SDisplacement)

1 个答案:

答案 0 :(得分:1)

你的循环正在将p(和E和G)重置为1,2和3,你应该一次只循环一件事。您需要使用整数作为循环迭代器,然后使用该整数作为p:

的下标
for ip = 1: 3
    for iE = 1: 3
        for iG = 1: 3
            AoP=25*(pi*p(ip)^2) 
        end
    end
end

每次您想在计算中使用pEG时,您需要为其提供各自的下标:

p(ip)
E(iE)
G(iG)

在pi不受伤害之后,()括号,但它们是不必要的。最后的disp语句也是不必要的,因为它们将显示在循环内。