我必须创建一个nxn矩阵,其中 199, 409, 619,....210n-11 在对角线上,其他地方都是零。
到目前为止,这是我的 M 文件:
function A = MyDiagMatrix(n)
A = zeros(n,n);
for i =199:210:210n-11
eye(i);
end
end
我究竟做错了什么?任何帮助都会很棒!
首先,您的函数初始化矩阵A,但之后什么也不做。您需要为您的函数修改A的条目以返回零矩阵以外的任何内容。
您可以使用 MATLAB 的函数diag从向量创建对角矩阵。例如
d=1:n; %# create vector 1,2,...,n
A = diag(d) %# create diagonal matrix with entries A(i,i) = i with i=1,2,...,n;
修改输入向量d以满足您的需要
如果你想要它作为一个函数......
function [ a ] = MyDiagonalMatrix( n )
a = diag(199:210:210*n-11);
end
ps 这应该归功于 Azim。
这是您需要的功能:
@( n ) diag(199:210:210*n-11)
以及调用它的例子:
MyDiagonalMatrix(3)
MATLAB R2012a 中的实际测试:
>> MyDiagonalMatrix = @( n ) diag(199:210:210*n-11)
MyDiagonalMatrix =
@(n)diag(199:210:210*n-11)
>> MyDiagonalMatrix(3)
ans =
199 0 0
0 409 0
0 0 619
>> MyDiagonalMatrix(5)
ans =
199 0 0 0 0
0 409 0 0 0
0 0 619 0 0
0 0 0 829 0
0 0 0 0 1039
它们满足您的要求:“一个 nxn 矩阵,对角线下方有 199、409、619、....210n-11,其他地方都是零。”
希望有帮助!