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

时间:2011-01-21 02:50:15

标签: matlab linear-algebra

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

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

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

  e1 =    1     0

>> e2

  e2 =    0     1

希望获得1-liner,并且真的不想为这么简单的东西编写函数。

由于

4 个答案:

答案 0 :(得分:20)

为什么不

A = eye(N); 

然后A(:,i)是你的第i个基础向量

答案 1 :(得分:4)

两条线路可以吗?使用EYE创建单位矩阵,使用MAT2CELL将向量复制到单元格数组中,然后使用DEAL进行分发。

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

答案 2 :(得分:2)

要获取单个基础向量,请说明k维度中的N标准基础向量,您可以使用:

yourbasisvector = double(1:N == k)

1:N生成向量1 2 ... N,其中== k元素测试与k的相等性; double将逻辑值转换为数字。

答案 3 :(得分:0)

如果你是匿名函数,那就更方便了。

e = @(x) eye(size(A))(:,x);

如果A的大小是6乘6,则返回6乘1矢量。

e(1) = [1;0;0;0;0;0]