这似乎很简单,但我并不是专家,谷歌也没有帮助。
我想要在Matlab中以优雅的方式生成n维空间的标准有序基向量。例如,与以下行为类似:
>> [e1, e2] = SOB(2);
>> e1
e1 = 1 0
>> e2
e2 = 0 1
我希望你能提供一行代码,不想为如此简单的事情编写函数。
谢谢。
这似乎很简单,但我并不是专家,谷歌也没有帮助。
我想要在Matlab中以优雅的方式生成n维空间的标准有序基向量。例如,与以下行为类似:
>> [e1, e2] = SOB(2);
>> e1
e1 = 1 0
>> e2
e2 = 0 1
为什么不呢?
A = eye(N);
那么A(:,i)
就是您的第i个基向量。
要获取单个基向量,比如在N
维空间中的第k
个标准基向量,您可以使用以下方法:
yourbasisvector = double(1:N == k)
1:N
产生向量 1 2 ... N
,其中 == k
对每个元素进行等于k
的测试;double
将逻辑值转换为数字。
如果您使用匿名函数,会更加方便。
e = @(x) eye(size(A))(:,x);
e(1) = [1;0;0;0;0;0]
Error: ()-indexing must appear last in an index expression.
- User1291A
吗? - Miae Kim
double(1:N == [k1, k2, k3]')
来扩展这种方法,以一次获取多个身份向量。 - Mark Rucker