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')