6

別の人から継承したいくつかのmatlabコードを使用しています.q = [q;という行の意味がわかりません。気]。q =ディストリビューションになるように、それを削除できるはずだと思います...

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

誰かが私にこれを説明できますか?

4

5 に答える 5

7

MATLAB には、行列を操作するための組み込み関数がいくつかあります。プライムの特殊文字'は、行列の転置を示します。

ステートメントA = [ 1 2 3;4 5 6;7 8 9]'は行列を生成します

A = 
   1 4 7 
   2 5 8
   3 6 9

お役に立てれば

于 2013-02-05T21:11:13.247 に答える
5

Matlabの助けから

ヘルプctranspose
'複素共役転置。
X'はXの複素共役転置です。

 B = ctranspose(A) is called for the syntax A' (complex conjugate
 transpose) when A is an object.
于 2013-02-05T21:16:20.577 に答える
4

構文は、[X ; Y]2つの行列を垂直方向に連結します。そのため、その行は、計算されたばかりの結果をすでに計算された結果に追加していqます。単に再割り当てqした場合は、ループを通過するたびに関数がすでに実行したすべての計算を破棄することになります。

前方アポストロフィ'は複素共役を実行し、行列を転置します。distribucion_color_bin_RGB2おそらく実数値の列ベクトルが返されると思います。作成者は、結果マトリックスに追加する前に、それを水平に反転したいと考えていました。

@ ja72が指摘しているように、データが実際のものであると期待している場合でも、.'デフォルトで、実際に複素共役を意味する場合にのみ使用する(転置するだけの)スタイルの方が適しています。'

于 2013-02-05T21:19:39.220 に答える
0

通常、A' は行列 A の転置ですが、これは共役転置です。実数行列では機能しますが、複素数行列では機能しません

transpose(A) は実際の転置関数で、R 行列と C 行列の両方で機能します。

私は通常 A' を使用します。簡単ですが、FFT 変換のバグに直面するまで習慣を変えました。

于 2014-12-02T05:55:01.807 に答える
0

私は同じ問題に遭遇し、オクターブ(ubuntuのmatlab)を使用してテストしたところ、単に複素数aa'がその共役を意味することがわかりました。

octave:2> a = 1 + 1j
a =  1 + 1i
octave:3> a'
ans =  1 - 1i

さらに、複雑な行列にA:

octave:6> A = [1 + 2j 1 - 2j ; 2 - 1j 2 + 1j]
A =

   1 + 2i   1 - 2i
   2 - 1i   2 + 1i

octave:7> A'
ans =

   1 - 2i   2 + 1i
   1 + 2i   2 - 1i
于 2019-04-27T02:14:51.577 に答える