我有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”是德语的“否则”或“其他”)
问题出在哪里? 非常感谢!
答案 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
我希望这就是你要找的东西。