【发布时间】:2016-11-05 11:22:55
【问题描述】:
我想编写一个函数,它接受一个包含任意数量值的数组,并在一个新数组中返回它们更改后的值。
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 是如何工作的。如果我理解正确,我没有将更改的值正确添加到应该保存输出值的数组中,因此无法以这种方式读取它们,但如果我没记错的话,array(end + 1) = z 正在附加元素 z到数组的末尾。
我是否犯了不止一个错误?请指出其中任何一个,因为我无法理解 Matlab 语法,即使我确实知道如何用其他一些语言编程。
【问题讨论】:
-
您想从 z 数组的后面添加更改的值吗?
-
您的第一个和第二个
if和elseif语句在这里是多余的。如果您解释该怎么做,我可以帮助您 -
我想在最后添加它们,所以它们的顺序与更改它们之前的顺序相同。我想从[x1, x2, ..., xn]实现输出[f(x1), f(x2), ..., f(xn)],其中f是区间函数。
-
那你就不用从头添加了...