请问我这个输入x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0];cfx(x)
结果输出的是[29 11 -1 1 2.75 5 19],这里有几个结果是不对的,请教一下这个到底是哪里出问题了啊
function [y]=cfx(x)
if x<0&x~=-3
y=x.^2+x-6
elseif x>=0&x<5&x~=2&x~=3
y=x.^2-5.*x+6
else
y=x.^2-x-1
end
end
引用 皆我百晓生 小程序回复内容作答:
从你提供的代码来看,问题可能出在条件判断的部分。在 MATLAB 中,如果你传递一个向量给 if 语句来判断,它只会取向量中的第一个元素作为条件,并忽略其余元素。因此,你需要对这个问题做一些修改。
可以使用 for 循环迭代输入向量 x,并对每个元素进行判断和计算。以下是修改后的代码示例:
function y = cfx(x)
n = length(x);
y = zeros(1, n);
for i = 1:n
if x(i) < 0 && x(i) ~= -3
y(i) = x(i).^2 + x(i) - 6;
elseif x(i) >= 0 && x(i) < 5 && x(i) ~= 2 && x(i) ~= 3
y(i) = x(i).^2 - 5.*x(i) + 6;
else
y(i) = x(i).^2 - x(i) - 1;
end
end
end
使用修改后的代码,传入 x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0],应该会得到预期的输出。