Matlab:获得标准基向量的简单方法?

发布于 2024-10-13 03:26:44 字数 272 浏览 6 评论 0原文

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

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

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

  e1 =    1     0

>> e2

  e2 =    0     1

希望使用 1-liner,并且实际上不想为如此简单的东西编写函数。

谢谢

It seems like this should be easy, but I'm no expert and google isn't helping.

I would like an elegant way in Matlab of producing the standard ordered basis vectors for an n-dimensional space. For example, behaviour similar to the following:

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

  e1 =    1     0

>> e2

  e2 =    0     1

I'm hoping for a 1-liner and don't really want to write a function for something so simple.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

め七分饶幸 2024-10-20 03:26:44

为什么不

A = eye(N); 

A(:,i) 就是你的第 i 个基向量

Why not

A = eye(N); 

then A(:,i) is your i-th basis vector

心不设防 2024-10-20 03:26:44

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

yourbasisvector = double(1:N == k)

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

To obtain a single basis vector, say the k-th standard basis vector in N dimensions, you can use:

yourbasisvector = double(1:N == k)

1:N produces the vector 1 2 ... N, which == k element-wise tests for equality with k; double converts the logical values to numbers.

飘逸的'云 2024-10-20 03:26:44

两条线可以吗?使用 EYE 创建单位矩阵,使用 < 将向量复制到元胞数组中a href="http://www.mathworks.com/help/techdoc/ref/mat2cell.html" rel="nofollow">MAT2CELL,然后使用 交易

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

Would two lines be ok? Create the identity matrix with EYE, copy vectors into a cell array using MAT2CELL, then distribute them with DEAL.

tmp = mat2cell(eye(N),N,ones(N,1));
[e1,e2,...,eN] = deal(tmp{:})
不及他 2024-10-20 03:26:44

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

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

如果 A 的大小为 6 x 6,则返回 6 x 1 向量。

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

if you anonymous function, it is more convenient.

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

If the size of A is 6 by 6, this returns 6 by 1 vector.

e(1) = [1;0;0;0;0;0]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文