Matlab 中的矩阵到向量转换

发布于 2024-11-03 16:50:42 字数 320 浏览 2 评论 0原文

我有一个 MxN 矩阵,想转换为向量 MNx1,其中矩阵中行的所有元素作为向量的元素。

我尝试使用 reshape 但没有成功。

这是小代码片段和预期结果。

  S=[0     1
     1     0
     1     1
     1     1 ]

预期结果:

S_prime= [ 0 1 1 0 1 1 1 1]

PS:使用循环和串联不是一种选择,我确信有一种简单直接的技术,但我不知道。

谢谢

I have a MxN Matrix and would like to convert into a vector MNx1 with all the elements of the row from the Matrix as the elements of the Vector.

I tried using reshape but I was not successful.

Here is the small code snippet and the expected result.

  S=[0     1
     1     0
     1     1
     1     1 ]

Expected Result:

S_prime= [ 0 1 1 0 1 1 1 1]

P.S: Using a loop and concatenation is not an option, I am sure there is a easy straight forward technique, which I am not aware.

Thanks

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

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

发布评论

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

评论(4

柏林苍穹下 2024-11-10 16:50:43

您可以尝试转置 S 并使用 (:)

S = S'
S_prime = S(:)

或作为行向量:

S_prime = S(:)'

You could try transposing S and using (:)

S = S'
S_prime = S(:)

or for a row vector:

S_prime = S(:)'
风吹雪碎 2024-11-10 16:50:43

Reshape 按列获取元素,因此在重塑之前转置 S。

>> reshape(S',1,[])

ans =

     0     1     1     0     1     1     1     1

Reshape takes the elements column wise so transpose S before reshaping.

>> reshape(S',1,[])

ans =

     0     1     1     0     1     1     1     1
臻嫒无言 2024-11-10 16:50:43
reshape(S',1,prod(size(S)))

或捷径

reshape(S',1,[])

但是这个问题让我想知道你原来的问题是什么,以及这种方式是否真的是原始问题的正确解决方案的一部分。

reshape(S',1,prod(size(S)))

or shortcut

reshape(S',1,[])

But the question makes me wonder what your original problem is, and if this way really is part of the correct solution to the original problem.

时间海 2024-11-10 16:50:43

Octave 有一个非常好的函数:vec()。

该文档位于 http://www.mathcs.emory。 edu/~nagy/courses/fall10/515/KroneckerIntro.pdf 指出以下内容。

vector x = vec(X) 
can be obtained with the MATLAB statement: x = reshape(X, q*n, 1)

Octave has a very nice function: vec().

The document at http://www.mathcs.emory.edu/~nagy/courses/fall10/515/KroneckerIntro.pdf states the following.

vector x = vec(X) 
can be obtained with the MATLAB statement: x = reshape(X, q*n, 1)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文