Чтобы масштабировать значения от распределения Вигнера-Вилле до реального диапазона в Matlab

Я запускаю с помощью функции tfrwv.m в Time-Frequency Toolbox

[B,T,F] = tfrwv(data, 1:length(data), length(data), 1);
B(1:130, :) = 0;    % remove the duplicate part of the distribution
imagesc(T, F, abs(B));
colormap(hot);
xlabel('t [s]');
ylabel('f [Hz]');

я получил

Частота должна быть в пределах [0,180] Гц и время [0,2,5 с].

Как вы можете масштабировать время и частоту до реальных значений?

В руководствах говорится

%TFRWV  Wigner-Ville time-frequency distribution.
%   [TFR,T,F]=TFRWV(X,T,N,TRACE) computes the Wigner-Ville distribution
%   of a discrete-time signal X, 
%   or the cross Wigner-Ville representation between two signals. 
% 
%   X     : signal if auto-WV, or [X1,X2] if cross-WV.
%   T     : time instant(s)          (default : 1:length(X)).
%   N     : number of frequency bins (default : length(X)).
%   TRACE : if nonzero, the progression of the algorithm is shown
%                                    (default : 0).
%   TFR   : time-frequency representation. When called without 
%           output arguments, TFRWV runs TFRQVIEW.
%   F     : vector of normalized frequencies.
%
%   Example :
%    sig=fmlin(128,0.1,0.4); tfrwv(sig);
% 

и я бегу

[B,T,F] = tfrwv(data, 1:length(data), length(data), hamming(length(data)/10), hamming(length(data)/4));

и я получаю

Error using tfrwv
Too many input arguments.

Error in flow_wv (line 8)
    [B,T,F] = tfrwv(data, 1:length(data), length(data),
    hamming(length(data)/10), hamming(length(data)/4));

Я думаю, что проблема здесь заключается в инициализации окон для времени и частоты. Я пытаюсь манипулировать обеими осями, редактируя значения параметров.

Соответствующая спектрограмма тех же данных, но с метками оси справа, сделанная функцией спектрограммы по умолчанию Matlab, обсуждается здесь:

2 ответа

Решение

Я думаю tfrwv эквивалентно spectrogram если вы используете следующую команду.

Временной интервал t = 1/360, выберите fs = 360.5,

imagesc(T*t, F*fs, abs(B)); 

Есть больше пиков в tfrwv вероятно, потому что размер окна и перекрытия отличаются от того, что вы использовали в spectrogram,

Результат

В распределении Вигнера-Вилля нет понятия перекрытия. Это относится только к STFT и спектрограмме, которая является квадратным модулем STFT.

Результаты из 'tfrwv' (и все вычисления TFR в TFTB) представлены в нормализованных единицах частоты. Вы не можете получить единицы по частоте и секундам без предоставления частоты дискретизации \ частоты.

Это слишком много входных аргументов.

[B, T, F] = tfrwv (данные, 1: длина (данные), длина (данные), Хемминга (длина (данные)/10), Хемминга (длина (данные)/4));

Есть три выходных аргумента и до четырех входных аргументов, так что если вы дадите пять, это приведет к ошибке. Кроме того, четвертый входной аргумент - это логическое значение для включения трассировки, которое просто выводит некоторую информацию о ходе выполнения в командное окно Matlab во время вычислений.

Просто для проверки реальности сделайте свой tfrwv вызов без выходных аргументов (т.е. >> tfrwv(blah, blah);) это вызовет tfrqview который является инструментом для построения графиков. Одной из опций в меню является изменение частоты дискретизации (введите частоту дискретизации в Герцах в командной строке Matlab), и он обновит фигуру, чтобы иметь действительные частоты по оси Y и времена по оси X. В противном случае значение по умолчанию - нормализованная частота, а ось Y - это время в единицах выборок.

Чтобы сделать это вручную, вам нужно будет использовать трехмерный "график", в котором вы можете использовать частоту дискретизации для преобразования T а также F векторы - это истинное время и истинная частота вместо выборок и нормализованной частоты (нормализованная частота составляет [0 0,5]). Тогда TFR используется для нанесения цвета на ось Z, т.е. >>imagesc(T.*1/Fs, F.*Fs, TFR);

TFTB - это потрясающий инструментарий с лучшей документацией, которую я когда-либо видел из стороннего набора инструментов Matlab с открытым исходным кодом. Покопайтесь в нем для "refguide.pdf" и "tutorial.pdf".

Другие вопросы по тегам