1

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

私は何を間違っていますか?どんな助けでも素晴らしいでしょう!

4

3 に答える 3

7

まず、関数は行列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-02T18:21:39.773 に答える
3

機能として欲しいなら…

function [ a ] = MyDiagonalMatrix( n )
a = diag(199:210:210*n-11);
end

ps これは本当に Azim の功績によるものです。

于 2011-09-02T18:50:32.737 に答える
0

必要な機能は次のとおりです。

@( 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行列」。

それが役立つことを願っています!

于 2013-03-28T11:29:05.690 に答える