Как я могу построить график зависимости частоты от вейвлет-преобразования?

14

Я бегу Morlet непрерывного вейвлет-преобразования. У меня есть wscalogramсигнал, и теперь я хочу построить частоту, как показано на следующем рисунке., Но я не знаю, как это сделать:

введите описание изображения здесь

Я использовал scal2freqфункцию MATLAB для преобразования весов в псевдочастоты. Также у меня есть некоторые частоты в моем сигнале, которые имеют большой коэффициент демпфирования (4%), поэтому они не очень хорошо видны на графике. Как я могу преувеличить эти сильно затухающие моды?

Я использую MATLAB, вот мои коды:

% Import the text4.txt to matlab workspace. and save it under name "data"
t=linspace(0,30,301);
Fs=ceil(inv(t(2)-t(1)));
x=data(:,4); % use x=data(:,3),x=data(:,5) too. first column is time,second is refrence
wname = 'morl';
scales = 1:1:256;
coefs = cwt(x,scales,wname,'lvlabs');
freq = scal2frq(scales,wname,1/Fs);
surf(t,freq,abs(coefs));shading('interp');
axis tight; xlabel('Seconds'); ylabel('Pseudo-Frequency (Hz)');
axis([0 30 0 1 0 60])
xlabel('Time'); ylabel('Frequency');
figure;
sc=wscalogram('image',coefs,'scales',freq,'ydata',x);
hold on 

Мой текущий сюжет выглядит так:

введите описание изображения здесь

Electricman
источник
Какую форму принимают данные вейвлет-преобразования?
Джим Клэй
Привет @ JimClay! Я не уверен, что понимаю ваш вопрос. но если вы имеете в виду, как это выглядит, это как 2-я ссылка, которую я сохранил в вопросе. и я хочу сюжет, как 1-я ссылка. (2-й [myplot]) cubeupload.com/im/bSSlMI.jpg 1-й [требуемый]) cubeupload.com/im/KbhGMI.jpg вот мой сигнал < fileswap.com/dl/Lwf7n96fAt/test4.txt.html > здесь Мой Mfile < fileswap.com/dl/gMrslBFAdb/mfile.txt.html > с наилучшими пожеланиями.
Электрик
Я не совсем уверен, что ваш вопрос ...
Тарин Ziyaee
Привет @ user4619; Посмотрите на первый сюжет. вы видите график [freq-magnitude] с правой стороны вейвлет-скалограммы [который получен с помощью matlab]. вторая картинка - моя вейвлет-скалограмма но я не знаю, как изобразить [частоту] как правую часть первого графика. любая помощь плз?
Электрик
@Electricman Спектрограмма - это не то же самое, что скалограмма. Если вы идете по скалограмме, то нет частоты VS времени, только шкала VS времени. Так какой именно ты делаешь?
Тарин Зияи

Ответы:

4

Немного изменив свой код, но без серьезных изменений, и я получаю правильные результаты в любом случае. Используйте этот шаблон кода здесь, и вы не должны видеть никаких проблем. Я получаю правильные результаты.

clear all; 
t=linspace(0,30,301); 
Fs = (inv(t(2)-t(1))); 
x=randn(100,1);  
wname = 'morl'; 
scales = 1:1:256; 
chefs = cwt(x,scales,wname,'lvlabs');

freq = scal2frq(scales,wname,1/Fs);

figure; 
coefsSquared = abs(coefs).^2; 
imagesc(coefsSquared); 
grid off;

%Pick one of the columsn to plot: 
figure; 
plot(coefsSquared(:,47))

Чтобы получить фигуру справа от первого изображения, которое вы подняли, это просто временной спектр. Другими словами, один столбец вашей частотно-временной матрицы.

Например, мы могли бы получить следующую матрицу квадратов-коэффициентов по частоте и времени:

введите описание изображения здесь

Давайте теперь предположим, что мы хотим посмотреть на спектр для временного среза в столбце 47. Затем это дается здесь:

введите описание изображения здесь

Здесь вы видите мощность коэффициентов в зависимости от частоты для временного интервала, соответствующего столбцу 47.

Тарин Зияе
источник
Спасибо за изменение кода. Но я еще не получил ответ на свой вопрос. Вопрос в том, как я могу изобразить частоту или шкалу [без разницы]. Я хочу сюжет, похожий на правую сторону первой картинки. [Это под вопросом]. Заранее спасибо
Электрик
1
@Electricman График справа - это просто один столбец матрицы Frequency VS Time.
Тарин Зияе
- @ user4619 Это не частота в зависимости от времени, временной диапазон 0-20, а частотный диапазон 0-2,5, но правый график - частота в зависимости от величины. Я не уверен, точно ли это значения или величины, но, очевидно, они пропорциональны значениям или значениям ^ 2. tnx
Электрик
@ Электрик Пожалуйста, смотрите изменения. Это теперь понятнее?
Тарин Зияи
- @ user4619 Это работает. Спасибо за Ваш ответ. Я положил небольшой код в конце mfile. и получил тот же сюжет, что и правая часть упомянутого сюжета. COF2 = ABS (coefs) ^ 2.; cof2trans = COF 2' ; maxmods = макс (cof2trans); фигура; сюжет (maxmods, freq) ось ([0 60 0 1]) С наилучшими пожеланиями
Электрик
4

Непрерывное вейвлет-преобразование (CWT) является методом для анализа масштаба времени . Да, вы правильно прочитали, масштаб , а не частота . Тем не менее, можно отобразить шкалы на частоты, и даже довольно легко. Поскольку вы являетесь пользователем MATLAB, вы, вероятно, захотите использовать эту функцию , которая выполняет следующие действия:

F = scal2frq (A, «wname», DELTA) возвращает псевдочастоты, соответствующие шкалам, заданным A, вейвлет-функции «wname» (см. Wavefun для получения дополнительной информации) и периоду выборки DELTA.

Как вы можете прочитать, частоты - это не реальные частоты в сигнале, а приблизительные значения. Если вам нужны реальные частоты, вы должны использовать кратковременное преобразование Фурье (STFT).

Итак, когда следует использовать CWT? Как правило, вейвлеты хорошо работают, когда сигналы переходные (т.е. имеют быстрые изменения).

РЕДАКТИРОВАТЬ: ха-ха, я не знаю, что я здесь делаю. извините :-D полностью упустил суть вашего вопроса. Просто прочитайте название ....

WAV
источник
@wave ваша информация верна. Ну и что? Я просто хочу иметь сюжет, похожий на правую сторону первой картинки. частота против величины. и все в порядке, если я получу масштаб против величины, пока я могу использовать scal2freq.
Электрик
«Если вы хотите реальные частоты, вы должны использовать кратковременное преобразование Фурье (STFT)». Вейвлет Морле имеет частоту так же, как частота STFT с гауссовым окном. «Атомы» обоих преобразований одинаковы.
Эндолит
0

Не уверен, если вам все еще нужна помощь ...

Если вы хотите, чтобы частота зависела от величины, используйте команду «mesh / surf» для построения коэффициентов.

Затем измените ориентацию сюжета, чтобы получить результат, который вы ищете. Для этого смотрите команду «просмотр».

asilva732
источник
Спасибо, я решил эту проблему несколько месяцев назад и опубликовал свои результаты. Но в следующий раз я попробую ваш вариант. Но, пожалуйста, переместите свой ответ на место для комментариев. удачи. @ asilva732
Электрик