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

问题描述 投票:5回答:5

我正在使用一些我从另一个人继承的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
5个回答
7
投票

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

声明A = [ 1 2 3;4 5 6;7 8 9]'产生矩阵

A = 
   1 4 7 
   2 5 8
   3 6 9

希望这可以帮助


5
投票

来自Matlab的帮助

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

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

3
投票

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

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

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


0
投票

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

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

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


0
投票

我遇到了同样的问题并使用octave(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
© www.soinside.com 2019 - 2024. All rights reserved.