199、409、619、....210n-11 を対角線に、それ以外はすべてゼロのnxn行列を作成する必要があります。
これまでの私の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
それらはあなたの要件を満たしています:「199、409、619、....210n-11が対角線にあり、それ以外はゼロのnxn行列」。
それが役立つことを願っています!