1
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' 进行数组选择。我该如何改进它?请帮我。

4

1 回答 1

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
于 2012-11-24T01:30:30.323 回答