程序集合

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

1.jpg-105.6kB
2.jpg-32.8kB

程序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');

1.jpg-113.6kB
2.jpg-29.5kB

程序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');

1.jpg-33.8kB
2.jpg-35.4kB

程序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');

abc.png-14.4kB
a1c.png-38.3kB

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

1.jpg-33.8kB
2.jpg-20.2kB

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

1.jpg-33.8kB
2.jpg-93.4kB
3.jpg-37.3kB

posted @ 2019-09-17 23:12  kolane  阅读(417)  评论(0编辑  收藏  举报