0

我有一些简单的函数接受一个值

该值是检查了多个 if 或 elseif 语句以计算另一个值。

问题是它在尝试运行时似乎发现了一个错误,它说

错误使用/矩阵尺寸必须一致。

abc 中的错误(第 9 行)a = 5000 / g;

代码如下

function abc(g)


if (g == 100)
   a = 1;
elseif (g <= 99 & g >= 50)    
   a = 200 -2*g;
elseif (g <= 50 & g >= 1)
   a = 5000 / g;
else
  warning('Invalid value passed, a defaults to 1');
  a =1;
end
end

因此,我传入 abc 100 并且我希望 a 为 1,但它会遍历每个 if / elseif 并在 a = 5000/g 上引发错误

我还应该提到我最初尝试在 elseifs 中使用 && 但这也给出了一个错误,它说

|| 的操作数 和 && 运算符必须可转换为逻辑标量值。

abc 错误(第 6 行) elseif (g <= 99 && g >= 50)

有人知道这里发生了什么吗?谢谢

4

1 回答 1

4

您可能正在将矩阵传递给您的函数,例如当您调用时

abc(yourdata)

yourdata实际上不是一个数字,而是一个矩阵。如果你直接打电话

abc(100)

你不应该看到你的问题(或者你呢?)。

换句话说,您的主要问题不在函数内部,而是在调用它时!

根据您的描述,您似乎设置yourdata(1)为要测试的值 100,但矩阵的其他一些元素具有不同的值,这就是if构造分支到 else 情况的原因。在那里,如果您想进行元素除法而不是矩阵除法./,则需要代替。/

yourdata但实际上,您可能只需要在调用函数时确保它是标量的。

于 2012-02-21T09:53:03.993 回答