首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB中,如何使用nxn矩阵在任何地方创建带整数和零的对角线。

在MATLAB中,如何使用nxn矩阵在任何地方创建带整数和零的对角线。
EN

Stack Overflow用户
提问于 2011-09-02 17:40:51
回答 3查看 6.1K关注 0票数 1

我必须用199,409,619,.210 n-11在对角线上创建一个n×n矩阵,在其他任何地方都是零。

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

代码语言:javascript
复制
function A = MyDiagMatrix(n)
     A = zeros(n,n);
     for i =199:210:210n-11
          eye(i);
     end
end

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

EN

回答 3

Stack Overflow用户

发布于 2011-09-02 18:21:39

首先,您的函数初始化矩阵A,但之后不对它做任何操作。您需要为函数修改A的条目,以返回任何大于零矩阵的内容。

您可以使用MATLAB的函数diag,它从向量创建对角线矩阵。例如

代码语言:javascript
复制
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以满足您的需要

票数 7
EN

Stack Overflow用户

发布于 2011-09-02 18:50:32

如果你想把它当作一个函数..。

代码语言:javascript
复制
function [ a ] = MyDiagonalMatrix( n )
a = diag(199:210:210*n-11);
end

附注:这件事的功劳真的应该归于阿齐姆。

票数 3
EN

Stack Overflow用户

发布于 2013-03-28 11:29:05

下面是您需要的函数:

代码语言:javascript
复制
@( n ) diag(199:210:210*n-11)

例如把它称为:

代码语言:javascript
复制
MyDiagonalMatrix(3)

在MATLAB R2012a中进行实际测试:

代码语言:javascript
复制
>> 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沿着对角线,在其他任何地方都是零。”

希望这能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7287259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档