Matlab中的矩阵矢量转换

Matlab中的矩阵矢量转换,matlab,octave,Matlab,Octave,我有一个MxN矩阵,我想将它转换成一个向量MNx1,其中矩阵中的行的所有元素都作为向量的元素 我尝试使用重塑,但没有成功 下面是小代码片段和预期结果 S=[0 1 1 0 1 1 1 1 ] 预期结果: S_prime= [ 0 1 1 0 1 1 1 1] 附言:使用循环和连接不是一个选项,我确信有一个简单的直接技术,我不知道 谢谢 或捷径 reshape(S',1,[]) 但是这个问题让我想知道你原来的问题是什么,以及这

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

我尝试使用
重塑
,但没有成功

下面是小代码片段和预期结果

  S=[0     1
     1     0
     1     1
     1     1 ]
预期结果:

S_prime= [ 0 1 1 0 1 1 1 1]
附言:使用循环和连接不是一个选项,我确信有一个简单的直接技术,我不知道

谢谢

或捷径

reshape(S',1,[])

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

重塑以列为单位,因此在重塑之前将S转置

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

ans =

     0     1     1     0     1     1     1     1

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

或对于行向量:

S_prime = S(:)'

倍频程有一个非常好的函数:vec()

该文件载列如下

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

我这里没有Matlab来尝试它,但是你可以尝试
S_prime=S(:,:)
它不起作用,它仍然以原始形式输出矩阵副本:,这不是我想要的,这类似于写S(:)我想将行连接到向量中。好吧,这让我对原始问题更加好奇,但是只需转置S,然后使用这些方法。我将编辑我的答案。我认为问题在于,只需按照您给定的方式重新塑造S,它将返回[0 1 1 1 0 1],这与请求行选择而不是列选择不同。感谢Adrian,非常感谢您的时间和帮助。我想知道,为什么我不尝试转置。非常感谢您这是(:)行向量的正确答案?我认为作为一个单行程序,f'(:)是正确的答案(至少用倍频程测试)。这里是关于这个特性的倍频程文档页面:我和诺伯特有相同的经验。S'(:)给出了一个行向量。S(:)'给出了一个行向量,但元素是按列添加的,不是我想要的。
S_prime = S(:)'
vector x = vec(X) 
can be obtained with the MATLAB statement: x = reshape(X, q*n, 1)