我必须用199,409,619,.210 n-11在对角线上创建一个n×n矩阵,在其他任何地方都是零。
到目前为止,这是我的M文件:
function A = MyDiagMatrix(n)
A = zeros(n,n);
for i =199:210:210n-11
eye(i);
end
end我做错什么了?任何帮助都会很好!
发布于 2011-09-02 18:21:39
首先,您的函数初始化矩阵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以满足您的需要
发布于 2011-09-02 18:50:32
如果你想把它当作一个函数..。
function [ a ] = MyDiagonalMatrix( n )
a = diag(199:210:210*n-11);
end附注:这件事的功劳真的应该归于阿齐姆。
发布于 2013-03-28 11:29:05
下面是您需要的函数:
@( 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它们满足你的要求:“n×n矩阵,199,409,619,.210 n-11沿着对角线,在其他任何地方都是零。”
希望这能帮上忙!
https://stackoverflow.com/questions/7287259
复制相似问题