我想绘制最大重叠离散小波变换的时频图,请问您有什么方法嘛?我试过了spectrogram函数 还有与fft有关的函数,tfrspwv函数,tfrwv函数,tfrstft函数等。
close all;
clear;
clc;
t1 = clock;
% 加载数据
load('D:\OneDrive\文档\MATLAB\mfile\毕业程序\EarthquakeData.txt');
save('D:\OneDrive\文档\MATLAB\mfile\毕业程序\EarthquakeData.mat','EarthquakeData');
data = load ('EarthquakeData.txt');%载入数据,两列
t = EarthquakeData(:,1);%时间
d = EarthquakeData (:,2);%加速度
x_denoing = wden(d,'heursure','h','sln',10,'sym4');%硬阈值去噪处理后的信号序列
figure(1);
plot(t,d);
xlabel('时间/s');ylabel('幅值');title('原始信号时域波形图');%绘制原始信号图
hold on;
plot(t,x_denoing);
legend('Input Data','Filtered Data');
% 选择小波名称和分解层数
wavename = 'sym4';
J = 10; %分解层数,初步选择:J<=log2(N/(N-L)+1) or J<= log2N;
% 进一步选择,根据应用的要求,分解到s,s要求的。
N = length(EarthquakeData); %数据长度
dt =(t(end)-t(1))/(N-1); %取样间隔
fs = 1/dt; %频率
%绘制信号的傅里叶变换的频谱图
figure(2);
df = fs/N;
f1 = (0:N-1)*df;
y = fft(x_denoing); %傅里叶变换
semilogx(f1,abs(y),'r'); %半对数图
%modwt
w_d = modwt(x_denoing,wavename,J,'reflection');
figure(3);
wmra = modwtmra(w_d,wavename,'reflection'); %modWtmra,分出了细节和近似,以及details的重构
helperMRAPlot(x_denoing,wmra,t,'Wavelet','modwtmra',[1 2 3 4 5 6 7]);
figure(5);
rec = imodwt(wmra,wavename);%小波重构
plot(t,x_denoing);
hold on
plot(t,rec);
xlabel('Time (s)');
ylabel('Amplitude');
title('Denoised Seismic Time-History Data');
legend('filtered Data','rec Data')