Matlab:获取标准基础向量的简便方法?

des*_*ons 6 matlab linear-algebra

看起来这应该很容易,但我不是专家,谷歌没有帮助.

我想在Matlab中以优雅的方式为n维空间生成标准有序基矢量.例如,行为类似于以下内容:

>> [e1, e2] = SOB(2);
>> e1

  e1 =    1     0

>> e2

  e2 =    0     1
Run Code Online (Sandbox Code Playgroud)

希望有一个1-liner并且不想真正想要为这么简单的东西编写函数.

谢谢

小智 20

为什么不

A = eye(N); 
Run Code Online (Sandbox Code Playgroud)

那么A(:,i)是你的第i个基础向量


Tha*_*les 7

要获得单个基向量,例如维度中的k第 -th 个标准基向量N,您可以使用:

yourbasisvector = double(1:N == k)
Run Code Online (Sandbox Code Playgroud)

1:N产生向量1 2 ... N,它按== k元素测试与 的相等性kdouble将逻辑值转换为数字。


Jon*_*nas 5

两条线可以吗?使用EYE创建单位矩阵,使用MAT2CELL将向量复制到元胞数组中,然后使用DEAL分配它们。

tmp = mat2cell(eye(N),N,ones(N,1));
[e1,e2,...,eN] = deal(tmp{:})
Run Code Online (Sandbox Code Playgroud)