我试图弄清楚如何在Windows cmd
- promt中使用Matlab,因为一种神秘的行为而被卡住了。
为了进行测试,我有以下函数文件:
function [ x y ] = testmath( u,v )
x = u*v;
y = u/v;
display(x);
display(y);
end
当我在Matlab提示中执行此操作时,我得到了正确的结果:
[x y] = testmath(2,2)
>> x = 4
>> y = 1
现在我想通过cmd
:
matlab -sd myCurrentDirectory -r "testmath 2 2" -nodesktop -nosplash
我得到了:
x = 2500;
y = 1;
你可以复制吗?可能是什么原因?通过传递参数我犯了错误吗?
答案 0 :(得分:5)
在Windows cmd
版本中,您使用两个字符参数('2'
)调用它,因为您忘记了括号。正确的版本是:
matlab -sd myCurrentDirectory -r "testmath(2,2)" -nodesktop -nosplash
在MATLAB命令提示符处重现“奇数”结果:
>> [x, y] = testmath 2 2
x =
2500
y =
1
>> [x, y] = testmath(2,2)
x =
4
y =
1
结果是2500,因为字符'2'
的ASCII码是50. MATLAB在将乘法运算符应用于一个或两个字符时使用此数字。
这称为function/command duality;没有括号传递的参数被解释为字符串。与
相同>> disp hello
hello
>> disp('hello')
hello
或
>> load myFile.dat
>> load('myFile.dat')
它既方便又令人困惑(正如你刚才注意到的那样)。