【问题标题】:In MATLAB, how to create diagonal with integers and zeros everywhere else using nxn matrix在 MATLAB 中,如何使用 nxn 矩阵在其他任何地方创建带有整数和零的对角线
【发布时间】:2011-09-02 17:40:51
【问题描述】:

我必须创建一个 n x n 矩阵,其中 199, 409, 619,....210n-11 在对角线上,其他地方为零。

到目前为止,这是我的 M 文件:

function A = MyDiagMatrix(n)
     A = zeros(n,n);
     for i =199:210:210n-11
          eye(i);
     end
end

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

【问题讨论】:

  • 等等,所以您只想创建一个大小为 N x N 且对角线全为零的矩阵?什么是 199:210:210n-11
  • Rook 解决了您的问题,Azim 解释了它是如何工作的。另请注意,210n 在 MATLAB 中不起作用,而不是隐含的乘法,您需要明确地说 210*n

标签: matlab matrix diagonal


【解决方案1】:

首先你的函数初始化矩阵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 以满足您的需求

【讨论】:

    【解决方案2】:

    如果你想要它作为一个函数......

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

    附言这应该归功于 Azim。

    【讨论】:

      【解决方案3】:

      这是你需要的功能:

      @( 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 x n 矩阵,对角线下有 199、409、619,....210n-11,其他地方为零。”

      希望有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-19
        相关资源
        最近更新 更多