我正在使用一些我从另一个人继承的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
任何人都可以向我解释这个吗?
MATLAB有几个内置函数来操作矩阵。素数的特殊字符'
表示矩阵的转置。
声明A = [ 1 2 3;4 5 6;7 8 9]'
产生矩阵
A =
1 4 7
2 5 8
3 6 9
希望这可以帮助
来自Matlab的帮助
帮助ctranspose '复共轭转置。 X'是X的复共轭转置。
B = ctranspose(A) is called for the syntax A' (complex conjugate transpose) when A is an object.
[X ; Y]
语法垂直连接两个矩阵。因此该行将刚刚计算的结果添加到已计算的q
中。如果您只是重新分配q
,那么您将丢弃该函数每次循环时已经完成的所有计算。
前撇号'
做一个复共轭并转换矩阵。我猜想distribucion_color_bin_RGB2
可能会返回一个实值列向量,并且作者希望将其翻转为水平,然后将其附加到结果矩阵。
正如@ ja72指出的那样,默认情况下使用.'
(只是转置)和'
更好的风格只有当你真正意味着一个复杂的共轭时,即使你期望你的数据是真实的。
通常A'是矩阵A的转置,但它是共轭转置。它适用于真实矩阵,不适用于复杂矩阵
转置(A)是真正的转置函数,都适用于R矩阵和C矩阵。
我通常使用A',这很容易,但我改变了习惯,直到我面对FFT转换中的错误
我遇到了同样的问题并使用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