Matlab函数奇怪的行为

时间:2015-10-26 20:21:57

标签: matlab function intervals

我有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 基本上每当它到达应该为零的部分时,无论是否有一些“有效”值,它都会给我全部为零 例如p_t(-5:5)给我全部为零

http://puu.sh/kYEyo/6bf0574d34.png这是我正在尝试编程的功能(“sonst”是德语的“否则”或“其他”)

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

1 个答案:

答案 0 :(得分:0)

我可能错了,但是-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

我希望这就是你要找的东西。