我有一些带有值的简单函数
这个值是检查了一些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)
有人知道这里有什么意思吗? 感谢
答案 0 :(得分:4)
您可能正在将矩阵传递给您的函数,例如当你打电话
abc(yourdata)
yourdata
实际上不是一个数字,而是一个矩阵。如果你直接打电话
abc(100)
你不应该看到你的问题(或者你呢?)。
换句话说,你的主要问题不在你的功能中,而是在你打电话的时候!
根据您的描述,似乎您将yourdata(1)
设置为要测试的值100,但矩阵的某些其他元素具有不同的值,这就是if
构造分支的原因进入其他情况。在那里,如果您想element-wise division而不是matrix division,则需要./
而不是/
。
但实际上,当你调用你的函数时,你可能只需要确保yourdata
是标量。