Matlab错误 - (可能还有其他人)在通话期间未分配

时间:2014-12-01 20:27:29

标签: arrays matlab function

这是我的功能(fun1.m):

  

函数n = F(x)

     

E = EXP(1)

     

if(-1< = x& x< = 0)

 n=x;
     

elseif(0 <= x&amp; x&lt; = 1)

n=x.*e.^x;
     

elseif(1&lt; = x&amp; x&lt; = 3)

 n=x^3;
     

如果我的x = -1:0.01:3

和y = fun1(-0.5); y = fun1(0.5); y = fun1(2)返回正确的值,然后为什么

y = fun1(x)

返回:

  

???输出参数“n”(可能还有其他)在期间未分配   调用“C:\ Program Files \ MATLAB \ R2011a \ bin \ fun1.m&gt; fun1

请帮助,我被困住了!我尝试了将数组作为输入的简单函数(没有ifs / elses),并且它们按预期工作。另外,如果我添加到fun1的末尾

  

否则

     

Y = 99;

它没有给我错误,但给了我y = 99的回复。我认为我的输入超出范围,但我不知道如何。

1 个答案:

答案 0 :(得分:0)

首先,使用&amp;&amp;而不是&amp;。

其次,您仍然可能有错误,因为精度错误,您的x可能略大于3或略小于-1。

编辑: 我以为你正在迭代x的值:

y = [];
for i=1:length(x)
    y(i) = F(x(i));
end