Windows cmd执行Matlab时的结果不同

时间:2013-09-11 15:27:22

标签: matlab cmd

我试图弄清楚如何在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;

你可以复制吗?可能是什么原因?通过传递参数我犯了错误吗?

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')

它既方便又令人困惑(正如你刚才注意到的那样)。