Я хотел бы знать, если это возможно, чтобы найти пиков из данных, которые содержат комплексные значения, как и следующие данные:найти пики из комплексных значений вектора
x = [1 2+3i 4 5+6i 0.1+0.2i 10 -1+9i]
Чтобы найти пики в реальных данных, мы может легко использовать функцию findpeaks
в MATLAB. Пример:
>> 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{:});
для пиков мне не нужен только один vlaue, но вектор пиков, спасибо за ответ –
let say для модульного случая? Потому что все остальные будут похожими –
@dato: 'a' - это только пример, который вы предоставили; он содержит только 1 пик. Разумеется, другие данные могут дать больше пиков. Просто используйте 'abs()', чтобы найти модуль (который является реальным, и вы знаете, как найти пики). –