1. 小波变换
程序1
%%% 小波变换 %%%%%% %% 导入数据 clc,clear close all; fs=1000; t=0:1/fs:2; f1=100; f2=50; s=sin(2*pi*f1*t)+sin(2*pi*f2*t); %% 画出图像 figure (1); % 时程信号绘图 plot(t,s); xlabel('t'); ylabel('幅值'); legend('正弦波'); grid on; set(gcf,'color','white'); % 刷白 saveas(gcf,'1.jpg'); %% 小波变换 wavename='cmor3-3'; totalscal = 2048; wcf = centfrq(wavename); % 小波的中心频率 cparam = 2*wcf*totalscal; % 为得到合适的尺度所求出的参数 a = totalscal:-1:0.2; scal = cparam./a; % 得到各个尺度,以使转换得到频率序列为等差序列 coefs=cwt(s,scal,wavename); % 得到小波系数 f=scal2frq(scal,wavename,1/fs); % 将尺度转换为频率 %% 绘制小波图像 figure(2); % 占用子图位置 % contour(t,f,abs(coefs)); % 设置等值线 imagesc(t,f,abs(coefs)); % 绘制色谱图 colorbar; % 设置色条 xlabel('时间 t/\mus'); % 时间轴 ylabel('频率 f/Hz'); % 频域显示 title('小波变换'); % 标题 set(gca, 'YDir', 'normal') % 频域轴翻转 set(gcf,'color','white'); % 刷白 saveas(gcf,'2.jpg');
程序2
%%% 小波变换 %%%%%% %% 导入数据 clc,clear close all; fs=1000; t=0:1/fs:2; f1=100; f2=50; s=sin(2*pi*f1*t.*(t>0&t<=1))+sin(2*pi*f2*t.*(t>1&t<2)); %% 绘制初始图像 figure (1); % 时程信号绘图 plot(t,s); xlabel('t'); ylabel('幅值'); legend('正弦波'); grid on; set(gcf,'color','white'); % 刷白 saveas(gcf,'1.jpg'); %% 小波变换 wavename='cmor3-3'; totalscal = 2048; wcf = centfrq(wavename); % 小波的中心频率 cparam = 2*wcf*totalscal; % 为得到合适的尺度所求出的参数 a = totalscal:-1:0.2; scal = cparam./a; % 得到各个尺度,以使转换得到频率序列为等差序列 coefs=cwt(s,scal,wavename); % 得到小波系数 f=scal2frq(scal,wavename,1/fs); % 将尺度转换为频率 %% 绘制小波图像 figure(2); % 占用子图位置 % contour(t,f,abs(coefs)); % 设置等值线 imagesc(t,f,abs(coefs)); % 绘制色谱图 colorbar; % 设置色条 xlabel('时间 t'); % 时间轴 ylabel('幅值'); % 频域显示 title('小波变换'); % 标题 set(gca, 'YDir', 'normal') % 频域轴翻转 set(gcf,'color','white'); % 刷白 saveas(gcf,'2.jpg');
程序3
%%%%%%%%%%%%%% 小波变换 %%%%%%%%%%%%%%%%%%%%%%% %% 导入数据 clc,clear close all; fullname = '10.csv'; M = csvread(fullname,8); % 读入csv信号 t= M(:,1); % 第一列,时间 dt=1E-7; % 采样时间 fs = 1/dt; % 采样频率 w = M(:,2); % 第二列,位移 %% 画出初始图像 figure (1); % 时程信号绘图 plot(t,w); xlabel('t /\mus'); ylabel('位移 / mm'); legend('位移'); grid on; set(gcf,'color','white'); % 刷白 saveas(gcf,'1.jpg'); %% 小波变换 wavename='morl'; totalscal = 2048; wcf = centfrq(wavename); % 小波的中心频率 cparam = 2*wcf*totalscal; % 为得到合适的尺度所求出的参数 a = totalscal:-1:0.2; scal = cparam./a; % 得到各个尺度,以使转换得到频率序列为等差序列 coefs=cwt(w,scal,wavename); % 得到小波系数 f=scal2frq(scal,wavename,1/fs); % 将尺度转换为频率 %% 绘制小波图像 figure(2); % 占用子图位置 % contour(t,f,abs(coefs)); % 设置等值线 imagesc(t,f,abs(coefs)); % 绘制色谱图 colorbar; % 设置色条 xlabel('时间 t/\mus'); % 时间轴 ylabel('频率 f/Hz'); % 频域显示 title('小波变换'); % 标题 axis([0,30,5e3,1e6]); %设置x,y轴范围 set(gca, 'YDir', 'normal') % 频域轴翻转 set(gcf,'color','white'); % 刷白 saveas(gcf,'2.jpg');
程序4
t = 0:1/2000:1-1/2000; dt = 1/2000; x1 = sin(50*pi*t).*exp(-50*pi*(t-0.2).^2); x2 = sin(50*pi*t).*exp(-100*pi*(t-0.5).^2); x3 = 2*cos(140*pi*t).*exp(-50*pi*(t-0.2).^2); x4 = 2*sin(140*pi*t).*exp(-80*pi*(t-0.8).^2); x = x1+x2+x3+x4; figure; plot(t,x) title('Superimposed Signal'); figure; cwt(x,2000); title('Analytic CWT using Default Morse Wavelet');
2. 短时傅立叶变换
程序1
%% 导入数据 clc,clear close all; fullname = '10.csv'; M = csvread(fullname,8,0); % 读入csv信号 t= M(:,1); % 第一列,时间 dt=1E-7; % 采样时间 fs = 1/dt; % 采样频率 w = M(:,2); % 第二列,位移 %% 画出初始图像 figure (1); % 时程信号绘图 plot(t,w); xlabel('t /\mus'); ylabel('位移 / mm'); legend('位移'); grid on; set(gcf,'color','white'); % 刷白 saveas(gcf,'1.jpg'); %% STFT win=128; nooverlap=win-2; nfft=128; [S,F,T] = spectrogram(w,win,nooverlap,nfft,fs); imagesc(t,w,abs(S)); saveas(gcf,'2.jpg') axis([0,30,-0.5e-5,0])
程序2
%% 导入数据 clc,clear close all; fullname = '10.csv'; M = csvread(fullname,8,0); % 读入csv信号 t= M(:,1); % 第一列,时间 dt=1E-7; % 采样时间 fs = 1/dt; % 采样频率 w = M(:,2); % 第二列,位移 %% 画出初始图像 figure (1); % 时程信号绘图 plot(t,w); xlabel('t /\mus'); ylabel('位移 / mm'); legend('位移'); grid on; set(gcf,'color','white'); % 刷白 saveas(gcf,'1.jpg')