Matlab 函数奇怪的行为

Matlab Function weird behavior

我在使用 Matlab 时遇到了这个问题(我也是 Matlab 的新手)

我写了这个函数:

function pret = p_t(i)

    if (i<=0)
        pret = (1/4)*exp((1/2)*i);
    elseif ((1 <= i))
        if(i <=4)
            pret = (1/9)*(i-1);
        else 
            pret = 0;
        end
    else
        pret = 0;
    end  

结束

所以如果我 运行 像这样 p_t(1:4) 我得到 0; 0.1111; 0.2222; 0.3333 基本上每次它击中它应该为零的部分时它都会给我所有零,无论某些 "valid" 值是否在区间内 例如 p_t(-5:5) 给我所有的零

http://puu.sh/kYEyo/6bf0574d34.png 这是我正在尝试编写的函数("sonst" 是德语 "otherwise" 或 "else")

知道问题出在哪里吗? 非常感谢!

我在这方面可能是错的,但 -if- 是一个二进制表达式,所以当用在除全零以外的任何向量上时,它的计算结果为真。此代码似乎没有遍历传递的向量。我不确定答案应该是什么样子,但这会遍历 i 的每个元素并将答案存储在 pret 中作为另一个向量。

function pret = p_t(i)
    pret=zeros(size(i));
    for j=1:length(i)
        if (i(j)<=0)
            pret(j) = (1/4)*exp((1/2)*i(j));
        elseif ((1 <= i(j)))
            if(i(j) <=4)
                pret(j) = (1/9)*(i(j)-1);
            else 
                pret(j) = 0;
            end
        else
            pret(j) = 0;
        end
    end

希望这就是您要找的。