2012-11-16 119 views
5

如何將此行更改爲列,此時所有750個條目都在一行上?將行向量更改爲列向量

p = normal(1:750)-1; 

我曾嘗試:

columns = 1; 
p = normal(1:750)-1; 
p = p(1:columns); 

我也曾嘗試:

rows = 1000; 
p = normal(1:750)-1; 
p = p(1:rows)'; 

回答

6

我會想象你可以只轉:

p = (normal(1:750)-1)' 
+0

謝謝丹在文檔中的任何地方都找不到! [上一個問題](http://stackoverflow.com/questions/13412283/matching-row-samples-to-class-labels)是我問爲什麼。 –

+1

確定順便說一句,這可能是你第一次嘗試的嘗試:p = p(1:length(p),1);但使用轉置肯定是正確的方法。 – Dan

+1

如果有人正在使用複數,請注意'''(或'ctranspose()')運算符是複共軛轉置。更多信息請參閱這裏的文檔:https://www.mathworks.com/help/matlab/ref/ctranspose.html。如果您想要非共軛轉置,請改用'。''(或'transpose()')。 – jvriesem

22

這是常見的做法MATLAB使用colon運營商:用於將任何東西轉換爲列向量。如果不知道或關心如果normal是一個行向量或列向量,就可以強制p是一個列向量,就像這樣:

p = p(:); 

在此之後,p保證是一個列向量。

+0

因此,a = 1:5會生成一個行向量,但b = a(:)是列向量? – John

+2

@John是的,確切地說。 –

+0

這是我的首選方法,因爲如果您已經有一個列向量,它不會將列向量轉換爲行向量。 – raoulcousins

3

設置p = p(:);確實是最好的方法。

小心使用'做轉置。我已經看到它多次失敗。非共軛轉置的matlab運算符實際上是'。'所以你會這樣做:

p = p.' 

如果你想不做複雜的共軛轉置。