如何创建没有眼睛和循环的单位矩阵

时间:2014-10-13 03:00:28

标签: matlab

我只是想知道是否有可能在没有眼睛功能,循环和任何matlab构建函数的情况下创建一个单一矩阵。起初我想用这样的东西:

A = bsxfun(@power, 1:n, (1:n).');

不幸的是,我不认为我可以在不使用任何循环的情况下分配值'1'和'0'。这仍然使用构建功能。任何想法?

3 个答案:

答案 0 :(得分:5)

使用A(1:n+1:end)引用应为1的A元素的巧妙技巧,你可以做到:

A=zeros(n^2,1);
A(1:n+1:end)=1;

MrAzzaman建议通过zeros初始化A来避免使用A(n,n)=0;

答案 1 :(得分:2)

如果允许bsxfun,那么

I = bsxfun( @eq, 1:n, (1:n).' );

答案 2 :(得分:1)

其中 num 是nxn矩阵的大小。

function matrix = identity_matrix(num)
matrix = zeros(num);   //this creates a new n by n zero matrix
matrix(1:num+1:end)=1;