Я бегу 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
Мой текущий сюжет выглядит так:
frequency-spectrum
frequency
wavelet
Electricman
источник
источник
Ответы:
Немного изменив свой код, но без серьезных изменений, и я получаю правильные результаты в любом случае. Используйте этот шаблон кода здесь, и вы не должны видеть никаких проблем. Я получаю правильные результаты.
Чтобы получить фигуру справа от первого изображения, которое вы подняли, это просто временной спектр. Другими словами, один столбец вашей частотно-временной матрицы.
Например, мы могли бы получить следующую матрицу квадратов-коэффициентов по частоте и времени:
Давайте теперь предположим, что мы хотим посмотреть на спектр для временного среза в столбце 47. Затем это дается здесь:
Здесь вы видите мощность коэффициентов в зависимости от частоты для временного интервала, соответствующего столбцу 47.
источник
Непрерывное вейвлет-преобразование (CWT) является методом для анализа масштаба времени . Да, вы правильно прочитали, масштаб , а не частота . Тем не менее, можно отобразить шкалы на частоты, и даже довольно легко. Поскольку вы являетесь пользователем MATLAB, вы, вероятно, захотите использовать эту функцию , которая выполняет следующие действия:
Как вы можете прочитать, частоты - это не реальные частоты в сигнале, а приблизительные значения. Если вам нужны реальные частоты, вы должны использовать кратковременное преобразование Фурье (STFT).
Итак, когда следует использовать CWT? Как правило, вейвлеты хорошо работают, когда сигналы переходные (т.е. имеют быстрые изменения).
РЕДАКТИРОВАТЬ: ха-ха, я не знаю, что я здесь делаю. извините :-D полностью упустил суть вашего вопроса. Просто прочитайте название ....
источник
Не уверен, если вам все еще нужна помощь ...
Если вы хотите, чтобы частота зависела от величины, используйте команду «mesh / surf» для построения коэффициентов.
Затем измените ориентацию сюжета, чтобы получить результат, который вы ищете. Для этого смотрите команду «просмотр».
источник