接受一个包含n个元素的数组并将它们作为数组返回 - Matlab

时间:2016-11-05 11:22:55

标签: arrays matlab

我想编写一个接受任意数量值的数组并在新数组中返回其更改值的函数。

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语法,即使我知道如何用其他语言编程。

1 个答案:

答案 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