2013-02-05 44 views
5

我正在使用一些我從另一個人身上得到的matlab代碼,我不明白該行的含義q = [q;齊']。我覺得我應該能夠刪除它,這樣q = distribuc ...這個主要符號做什麼 - MATLAB?

function [ q ] = ObtainHistogramForEachTarget(state, numberOfTargets, image, q) 

    for i=1 : numberOfTargets 
     qi = distribucion_color_bin_RGB2(state(i).xPosition,state(i).yPosition,state(i).size,image,2); 
     q = [q; qi']; 
    end 
end 

任何人都可以解釋這一點嗎?

+1

我想從記憶它代表了一個換位到一個矩陣,我需要檢查。 – legrandviking

+2

我會用'。'替換''',因爲第一個是複共軛轉置,而後者只是一個常規轉置。 – ja72

+1

@ ja72如果你從來不用複雜的數字工作,一個簡單的'''應該就足夠了。當提問者循環「我」時,應該保持簡單。 –

回答

8

MATLAB有幾個內置的函數來操縱矩陣。素數的特殊字符'表示矩陣的轉置。

聲明A = [ 1 2 3;4 5 6;7 8 9]'產生矩陣

A = 
    1 4 7 
    2 5 8 
    3 6 9 

希望這有助於

+7

請注意,'。''是轉置,''是複共軛轉置。處理複雜數據時的差異非常重要。 – shoelzer

4

從MATLAB的幫助

幫助ctranspose
「共軛複數。
X」是X

B = ctranspose(A) is called for the syntax A' (complex conjugate 
transpose) when A is an object. 
2

的複共軛轉置的[X ; Y]語法連接兩個矩陣垂直。因此該行將剛剛計算的結果添加到已計算的q。如果您只是簡單地重新指定q,那麼您將丟棄該函數在循環中每次執行的所有計算。

正向撇號'做複共軛並轉置矩陣。我猜想distribucion_color_bin_RGB2可能會返回一個實值列向量,作者想在將它附加到結果矩陣之前將其翻轉爲水平。

正如@ ja72指出,這是更好的風格默認使用.'(只轉)和'只有當你真正的意思是複共軛,即使你希望你的數據是真實的。

0

通常A'是矩陣A的轉置,但它是共軛轉置。它適用於實矩陣,不適用於復矩陣

轉置(A)是真正的轉置函數,它們都適用於R矩陣和C矩陣。

我通常用A」,這很容易,但我改變了我的習慣,直到我在FFT變換面對錯誤