我想编写一个接受任意数量值的数组并在新数组中返回其更改值的函数。
function zArray = y(xArray)
zArray = [];
for x = 1:size(xArray,2)
if x >= -2 && x < -1
z = ln(x + 2);
elseif x >= -1 && x < 0
z = (x + 1).^2;
elseif x >= 0 && x <= 2
z = (x + 1)/(x.^2 + 1);
else
z = -10
end
zArray(end + 1) = z;
end
end
然后我用:
调用该函数[z1, z2, z3] = y([0, 1, -1])
这给了我以下输出和消息:
z1 =
1.00000 0.60000 -10.00000
error: element number 2 undefined in return list
我是Matlab的新手,不知道Matlab for循环和数组是如何工作的。如果我理解正确,我没有正确地将更改的值添加到应该保存输出值的数组,因此无法以这种方式读取它们,但如果我没有弄错,array(end + 1) = z
将附加元素{ {1}}到数组的末尾。
我犯了多个错误?请指出它们中的任何一个,因为我很难理解Matlab语法,即使我知道如何用其他语言编程。
答案 0 :(得分:1)
我认为您希望以下内容,但您对语法感到困惑:
function zArray = y(xArray)
zArray = zeros(size(xArray));
for x = 1:size(xArray,2)
xVal = xArray(x);
if xVal >= -2 && xVal < -1
zArray(x) = log(xVal + 2);
elseif xVal >= -1 && xVal < 0
zArray(x) = (xVal + 1).^2;
elseif xVal >= 0 && xVal <= 2
zArray(x) = (xVal + 1)/(xVal.^2 + 1);
else
zArray(x) = -10;
end
end
end