Matlab:特征函数解算器的命令行输入(数值方法)

Matlab:特征函数解算器的命令行输入(数值方法),matlab,command-line-arguments,Matlab,Command Line Arguments,我有一些代码可以数值求解特征向量: function[efun,V,D] = solveeig(n,xmax,i) for j=1:i %The first and second derivative matrices dd = 1/(xmax/n)^2*(-2*diag(ones(n,1))+diag(ones(n-1,1),1)+... diag(ones(n-1,1),-1)); d = 1/(xmax/n)*((-1*diag(ones(n,1)))+diag(ones(n-1,1),

我有一些代码可以数值求解特征向量:

function[efun,V,D] = solveeig(n,xmax,i)
for j=1:i

%The first and second derivative matrices
dd = 1/(xmax/n)^2*(-2*diag(ones(n,1))+diag(ones(n-1,1),1)+...
diag(ones(n-1,1),-1));
d = 1/(xmax/n)*((-1*diag(ones(n,1)))+diag(ones(n-1,1),1));

%solve for the eigenvectors
[V,D] = eig(-dd-2*d);

%plot the eigenvectors (normalized) with the normalized calculated
%eigenfunctions
x = linspace(0,xmax,n);
subplot(i,1,j);
plot(x,V(:,j)/sum(V(:,j)),'*');
hold on
efun = exp(-x).*sin(j*pi*x/xmax);
plot(x,efun/(sum(efun)),'r');
shg
end
end
假设i是第一个i特征向量,n是 矩阵我们将x离散成的块数,xmax是定义fxn的范围的上限

我试图从命令行运行它:solveig,其中数字符号对应于I、n和xmax,但不管我为I、n和xmax输入了什么,我得到了带有字符操作数的冒号运算符,第一个和最后一个操作数必须是字符

我应该在命令行上写些什么来运行它?

使用命令语法将参数解释为字符串 有关更详细的信息,请参阅,但简而言之: 召唤

相当于打电话

myFun('myVar1','6','myVar2')
而不是想要的1

在第一种情况下,函数将接收3个文本字符串 在第二种情况下,函数将接收存储在myVar1 myVar2中的数据和数字6

您收到的特定错误是由第2行j=1:i引起的,这里i是一个字符串。这个错误仅仅是函数调用方式的结果,行本身是fine2

如何让它工作 使用函数语法:在命令窗口中,类似于:

solveeig(n,xmax,i)
如果命令语法是绝对必需的,我想不出为什么解析命令语法中输入的字符串会是不太有利的选择。将数字转换为数字格式,并对传递的变量名使用evalin/assignin从调用者中提取变量

1帕特里克在评论中提到
2意味着它不会出错,但是i和j作为变量名并不是你想要的,而是solveig,,,的问题是什么,,?还有,你是指matlab中的命令窗口还是linux终端或dos提示符?我意识到早上5点我的错误只是忘记了逗号。。。这就是我晚上工作到很晚所得到的!
myFun(myVar1,6,myVar2)
solveeig(n,xmax,i)