我只是想知道是否有可能在没有眼睛功能,循环和任何matlab构建函数的情况下创建一个单一矩阵。起初我想用这样的东西:
A = bsxfun(@power, 1:n, (1:n).');
不幸的是,我不认为我可以在不使用任何循环的情况下分配值'1'和'0'。这仍然使用构建功能。任何想法?
答案 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;