我已经获得了一些用于数值求解特征向量的代码:
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特征向量,n是该特征向量 矩阵(我们将x离散的片段数),xmax是fxn定义范围的上限。
我试图从命令行运行它(如:" solveeig ###",其中数字符号对应于i,n和xmax)但无论我是什么似乎为i,n和xmax输入,我得到"对于带有char操作数的冒号运算符,第一个和最后一个操作数必须是char。"
我应该在命令行上写什么才能让它运行?
答案 0 :(得分:0)
有关详细信息,请参阅the documentation,但简而言之:
调用
myFun myVar1 6 myVar2
相当于调用
myFun('myVar1','6','myVar2')
而不是所需的 1
myFun(myVar1,6,myVar2)
在第一种情况下,该函数将接收3个字符串(文本)
在第二个函数中,函数将接收存储在myVar1
myVar2
和数字6
您收到的具体错误是由第2行for j=1:i
引起的,此处i
是一个字符串。这个错误只是调用函数的方式的结果,行本身很好 2 。
使用函数语法:在命令窗口中输入:
solveeig(n,xmax,i)
如果绝对需要命令语法(我想不出它为什么会这样), 更不利的 替代方法是解析在命令语法中输入的字符串。将数字转换为数字格式,并在传递的变量名称上使用evalin / assignin从调用者中提取变量
1 如patrik的评论中所述
2 意味着它不会出错,但i
和j
变量名为another matter