2013-06-19 96 views
1

我想知道是否有可能找到包含複雜的值,比如下面的數據數據峯:找到復值向量峯

x = [1 2+3i 4 5+6i 0.1+0.2i 10 -1+9i] 

要查找峯實際數據,我們可以很容易地使用MATLAB中的findpeaks函數。例如:

>> data = [2 12 4 6 9 4 3 1 19 7];  
>> pks = findpeaks(data); 

pks = 

    12  9 19 

但是我很感興趣我該如何確定什麼應該成爲複雜數據峯值的標準?它是模數?例如,如果兩個復變量被

x = 3+4i 
y = 2+3i 

然後

|x| = sqrt(3*3+4*4) = 5 
|y| = sqrt(4+9) = 3.605551275 

明確|y|<|x|給出的,不是使任何意義?我已經嘗試了下面的代碼,但它給我帶來了錯誤

a = [1 2+3i 4+5i -1 0.1+0.2i]; 
>> a 

a = 

    Columns 1 through 3 

    1.0000    2.0000 + 3.0000i 4.0000 + 5.0000i 

    Columns 4 through 5 

    -1.0000    0.1000 + 0.2000i 

>> findpeaks(a) 
??? Error using findpeaks 
Expected X to be real. 

??? Error in findpeaks>parse_inputs (line 54) 
validateattributes(X,{'numeric'},{'nonempty','real','vector'},... 

??? Error in findpeaks (line 43) 
[X,Ph,Pd,Th,Np,Str,infIdx] = parse_inputs(X,varargin{:}); 

回答

1

您必須先決定在複雜數據中找到峯值意味着什麼。關於複雜平面的二維景觀中「峯」是什麼沒有明確而獨特的定義。

你可以將其定義爲在實軸的局部最大值:

>> a = [1 2+3i 4+5i -1 0.1+0.2i]; 
>> findpeaks(real(a)) 
ans = 
    4 

或虛軸:

>> findpeaks(imag(a)) 
ans = 
    5 

或模量:

>> findpeaks(abs(a)) 
ans = 
    6.403124237432849e+00 

或角度:

>> findpeaks(angle(a)) 
ans = 
    9.827937232473291e-01  3.141592653589793e+00 
+0

山峯我不需要只是單一的vlaue,但向量的峯值,感謝回覆 –

+0

讓我們說模數情況?因爲所有其他人都會類似 –

+0

@dato:'a'只是你提供的一個例子;它只包含1個峯值。其他數據當然可以給出更多的高峯。只需使用abs()來找到模量(這是真實的,你知道如何找到峯值)。 –