这个主要符号做什么 - MATLAB?

时间:2013-02-05 21:02:00

标签: matlab

我正在处理一些来自另一个人的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

任何人都可以向我解释这个吗?

5 个答案:

答案 0 :(得分:7)

MATLAB有几个内置函数来操作矩阵。素数的特殊字符'表示矩阵的转置。

语句A = [ 1 2 3;4 5 6;7 8 9]'生成矩阵

A = 
   1 4 7 
   2 5 8
   3 6 9

希望这会有所帮助

答案 1 :(得分:5)

来自Matlab的帮助

  

帮助ctranspose
   '复共轭转置。
       X'是X的复共轭转置。

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

答案 2 :(得分:3)

[X ; Y]语法垂直连接两个矩阵。因此该行将刚刚计算的结果添加到已计算的q。如果您只是重新分配q,那么您将丢弃该函数每次循环时已经完成的所有计算。

前向撇号'执行复共轭并转换矩阵。我猜想distribucion_color_bin_RGB2可能会返回一个实值列向量,并且作者希望在将其附加到结果矩阵之前将其翻转为水平。

正如@ ja72指出的那样,默认使用.'(只是转置)和'只有当你真正意味着复共轭时,即使你期望你的数据是真实的,也是更好的风格。

答案 3 :(得分:0)

通常A'是矩阵A的转置,但它是共轭转置。它适用于真实矩阵,不适用于复杂矩阵

转置(A)是真实的转置函数,都适用于R矩阵和C矩阵。

我通常使用A',这很容易,但我改变了习惯,直到我面对FFT转换中的错误

答案 4 :(得分: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