Add 1 to diagonal elements of a matrix(矩阵的对角元素加1)–[4]

  • A+

 

Add 1 to diagonal elements of a matrix(矩阵的对角元素加1)

 

问题

 

问题链接:https://mathematica.stackexchange.com/questions/156063/add-1-to-diagonal-elements-of-a-matrix

 

原文

I have a list of lists of numbers, for example:

 

{{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}}

The length of the list is the same length of each sublist. What I want to achieve is to add plus 1 to the diagonal elements without using For. Given the list above as an input, I need a result like this:

 

{{2,1,1,1},{1,2,1,1},{1,1,2,1},{1,1,1,2}}

Thank you.

 

翻译

 

我有一列包含许多有数字的列表的列表,例如:

{{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}}

列表的长度和列表中每个子列表的长度相等。我想做的是给对角线的元素加1,并且不使用For循环。以上面给出的列表为例,我需要的输出如下:

 

{{2,1,1,1},{1,2,1,1},{1,1,2,1},{1,1,1,2}}

谢谢。

 

高票回答

 

原文

 

By popular demand:

 

list + IdentityMatrix@Length@list

 

I'm a big fan of IdentityMatrix -- I try to use it whenever possible.

 

翻译

 

受人气的需要:

list + IdentityMatrix@Length@list

 

运行结果:

 

 

我十分喜欢使用IdentityMatrix--每当有需要我一定会使用他。

 

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: