在使用'while'结构进行循环时,如何使'if'选择结构适用于输入数组?

时间:2012-11-24 01:23:29

标签: matlab

A=[21.04  93.3  133.5   158.5   182.5];   
k=0;
while k<=length(A)
    k=k+1;
    if A(k) <=170
        B=(4*10^-5).*(A).^2 + (0.0096).*A + 0.012;
    else
        B=(0.0005).*(A).^2 - (0.1503).*A + 14.131;
    end 
end

我试图使用条件来解决两个结果的问题,但Matlab一直告诉我,我不能使用'if'进行数组选择。我怎么能改善它?请帮帮我。

1 个答案:

答案 0 :(得分:3)

这应该像现在一样有效,但我看到了一些问题。看起来你正试图让B依赖于A的值。我不认为你正在做你打算做的事情。一个更简单的方法是:

B=zeros(size(A))
B(A<=170)=(4*10^-5).*(A(A<=170)).^2 + (0.0096).*A(A<=170) + 0.012)
B(A>170)=(0.0005).*(A(A>170)).^2 - (0.1503).*A(A>170) + 14.131;

另外,你循环太多了。 for循环会更容易理解,在这种情况下很有用:

for k=1:length(A)
    if A(k) <=170
        B=(4*10^-5).*(A).^2 + (0.0096).*A + 0.012;
    else
        B=(0.0005).*(A).^2 - (0.1503).*A + 14.131;
    end 
end