1

我必须创建一个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

我究竟做错了什么?任何帮助都会很棒!

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

它们满足您的要求:“一个 nxn 矩阵,对角线下方有 199、409、619、....210n-11,其他地方都是零。”

希望有帮助!

于 2013-03-28T11:29:05.690 回答