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'进行数组选择。我怎么能改善它?请帮帮我。
答案 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