6

我正在使用从另一个人那里继承的一些 matlab 代码,我不明白 q =[q; 行的含义 齐']。我觉得我应该可以删除它,这样 q = distribuc ...

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 的帮助

help 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]语法垂直连接两个矩阵。因此,该行将刚刚计算的结果添加到已计算的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

我遇到了同样的问题并使用 octave(ubuntu 中的 matlab)对其进行了测试,发现对于一个复数a来说,a'意味着它的共轭。

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 回答