【问题标题】:Matrix to Vector Conversion in MatlabMatlab中的矩阵到向量转换
【发布时间】:2011-04-28 11:27:19
【问题描述】:

我有一个 MxN 矩阵,并希望将矩阵中的行的所有元素作为向量的元素转换为向量 MNx1。

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

这里是小代码sn-p和预期的结果。

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

预期结果:

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

P.S:使用循环和连接不是一种选择,我确信有一种简单直接的技术,我不知道。

谢谢

【问题讨论】:

标签: matlab octave


【解决方案1】:

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

S = S'
S_prime = S(:)

或者对于行向量:

S_prime = S(:)'

【讨论】:

【解决方案2】:

Reshape 采用列方式的元素,因此在 reshaping 之前转置 S。

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

ans =

     0     1     1     0     1     1     1     1

【讨论】:

  • 感谢阿德里安,非常感谢您的时间和帮助。我想知道,为什么我没有尝试转置。非常感谢
【解决方案3】:
reshape(S',1,prod(size(S)))

或快捷方式

reshape(S',1,[])

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

【讨论】:

  • 这不是我要找的,这类似于写 S(:) 我正在寻找逐行连接到向量中。
  • 好的,这让我更加想知道原来的问题,但只是转置 S 然后使用这些方法。我将编辑我的答案。
  • 我认为问题在于,只是按照您给它的方式重塑 S 会返回 [0 1 1 1 1 0 1 1],这与请求按行选择而不是按列选择不同。
【解决方案4】:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2014-01-02
    相关资源
    最近更新 更多