2013-03-23 77 views

回答

3

:操作者在這種情況下是用於基質重塑到載體中的簡寫。您可以解決的,你使用的運營商限制使用reshape功能明確:

octave> A = [1 2;3 4] 
A = 

    1 2 
    3 4 

octave> B=A' 
B = 

    1 3 
    2 4 

octave> C=B(:) 
C = 

    1 
    2 
    3 
    4 

octave> D=reshape(A',[],1) #% vectorize transpose in one line 
D = 

    1 
    2 
    3 
    4 
2

嘗試用:

output = reshape(A.', numel(A), 1); 

>> A = rand(4,3); 
>> output = reshape(A.', numel(A), 1); 

A = 

    0.447213 0.046896 0.679087 
    0.903294 0.768745 0.651481 
    0.701071 0.122534 0.611390 
    0.535844 0.478595 0.772810 

output = 

    0.447213 
    0.046896 
    0.679087 
    0.903294 
    0.768745 
    0.651481 
    0.701071 
    0.122534 
    0.611390 
    0.535844 
    0.478595 
    0.772810 

謹防重塑讀取矩陣沿列訪問,所以你可能不需要以轉置矩陣A.

此外,請記住,運算符'是厄米運算符,即轉置的共軛,而.'只是轉置,您可以也可以通過轉置獲得(A)。

您可能希望在一行中完成所有操作,而無需每次都重新輸入。一種解決方案是創建一個功能句柄作爲boop:

>> boop = @(x) reshape(transpose(x), numel(x), 1) 
>> output = boop(A) 

output = 

    0.447213 
    0.046896 
    0.679087 
    0.903294 
    0.768745 
    0.651481 
    0.701071 
    0.122534 
    0.611390 
    0.535844 
    0.478595 
    0.772810 
+0

謝謝,這個作品 – Immo 2013-03-23 15:18:17