【问题标题】:Matlab error - (and maybe others) not assigned during callMatlab 错误 - (可能还有其他人)在通话期间未分配
【发布时间】:2014-12-01 20:27:28
【问题描述】:

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

函数 n = F(x)

e=exp(1)

如果 (-1

 n=x;

elseif (0

n=x.*e.^x;

elseif (1

 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>fun1

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

其他

y=99;

它不会给我错误,但会给我 y=99 响应。我认为我的输入超出了范围,但我不知道如何。

【问题讨论】:

  • 嗯,是的。您的 x 介于 -1 和 3 之间,因此它不属于您的任何类别,因此是 99 结果。
  • 旁注:您不应将自己的函数存储在 Matlab 程序安装本身下。您可以将它们放在用户主目录下的My Documents\MATLAB 中,它们会自动出现在路径上。
  • 我不太了解你 am304,x 是 1x401 数组,我希望得到的 y 也是 1x401 数组。对于前 100 个 x'es,应该计算 y=x,接下来的 100 个应该是 y=x.*e.^x;最后 201 y=x^3;你能帮我修复我的功能,让它给我这些结果吗?这是我的问题的图片:i.imgur.com/PllyjFZ.png

标签: arrays matlab function


【解决方案1】:

首先,使用 && 代替 &。

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

编辑: 我以为你在遍历 x 的值:

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

【讨论】:

  • 如果我这样做,它会给我错误:??? || 的操作数和 && 运算符必须可转换为逻辑标量值。 ==> fun1 at 2 if (-1
  • @Spawn 使用 && 并尝试为 x 中的每个元素调用 F,如编辑中所示。但是,在 Matlab 中使用向量运算可以更快地实现这一点。
  • 您介意在这里与我分享吗?我刚刚有一个任务要做,所以如果它更容易,那就开枪吧! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多