matlab不能分割使用/

时间:2012-02-21 09:46:46

标签: matlab if-statement divide

我有一些带有值的简单函数

这个值是检查了一些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上抛出错误

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

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

abc错误(第6行) elseif(g <= 99&amp;&amp; g&gt; = 50)

有人知道这里有什么意思吗? 感谢

1 个答案:

答案 0 :(得分:4)

您可能正在将矩阵传递给您的函数,例如当你打电话

abc(yourdata)

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

abc(100)

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

换句话说,你的主要问题不在你的功能中,而是在你打电话的时候!

根据您的描述,似乎您将yourdata(1)设置为要测试的值100,但矩阵的某些其他元素具有不同的值,这就是if构造分支的原因进入其他情况。在那里,如果您想element-wise division而不是matrix division,则需要./而不是/

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