目录
1.短时傅里叶变换
clear
clc
close all
fs=100;
frequency=0.5
t=1/fs:1/fs:10*60;
signal=0.2*sin(2*pi*frequency*t)+0.2*cos(2*pi*2*frequency*t);
figure(1)
plot(t,signal)
figure(2)
pwelch(signal,1024*5,[],[],100)
xlim([0.2 2])
figure(3)
window=128*32
[ss,ff,tt]=spectrogram(signal,window,[],0.1:0.01:2,100);
view(-10,45)
view(2)
figure(5)
waterfall(tt,ff,10*log10(abs(ss)))
view(-40,45)
view(2)
clear
clc
close all
% 生成加速度时程信号
fs = 1000; % 采样频率为 1000 Hz
t = 0:1/fs:10; % 时间范围为 0 到 10 秒
f1 = 2; % 前期振动频率为 2 Hz
f2 = 3; % 后期振动频率为 3 Hz
% 前期振动信号
a1 = sin(2*pi*f1*t.^2/50);
% 后期振动信号,频率逐渐变化
a2 = sin(0.7*2*pi*f2*t.*(1 + (t - t(1))/(t(end) - t(1))));
% 合并前后两部分信号
a = [flip(a2),a2];
% 绘制加速度时程信号
figure;
plot([t,t+10], a);
xlabel('Time (s)');
ylabel('Acceleration');
title('Acceleration Time History');
% 进行短时傅里叶变换
window_size = 0.5; % 窗口大小为 0.5 秒
noverlap = 0.25; % 重叠比例为 0.25
nfft = 2048*2; % FFT 长度为 2048,增加了频率分辨率
% 计算短时傅里叶变换
[S, F, T] = spectrogram(a, window_size*fs, noverlap*fs, nfft, fs);
% 绘制短时傅里叶变换图
figure;
surf(T, F, abs(S), 'EdgeColor', 'none');
view(2); % 设置视角为俯视图
xlabel('Time (s)');
ylabel('Frequency (Hz)');
title('Short-time Fourier Transform of Acceleration Signal (0-10 Hz)');
colorbar; % 添加颜色条
% 优化颜色过渡
colormap jet; % 使用 'jet' 颜色映射
ylim([0 10])
2.小波变换
clc; clear;
% 设定参数
Fs = 2000; % 采样频率
t = 0:1/Fs:40-1/Fs; % 时间向量
X = 20*sin(2*pi*1*t); % 生成信号
% 绘制原始信号
figure;
plot(t, X);
title('原始信号');
xlabel('时间 (s)');
ylabel('幅值');
% 计算小波变换
[wt, f] = cwt(X, 'amor', Fs);
% 绘制云图
figure;
surface(t, f, abs(wt));
shading interp;
ylim([0 10])
title('小波变换云图');
xlabel('时间 (s)');
ylabel('频率 (Hz)');
% 修改颜色带
colormap('jet'); % 这里使用了 'jet' 颜色映射,你可以根据需要选择其他颜色映射
colorbar;
3.小波变换2
%增加分辨率
% clear
clc
close all
addpath('E:\0.函数')
fs_acc=200;
x1=(1/fs_acc:1/fs_acc:60)';
x2=(1/fs_acc:1/fs_acc:60)'+60';
y1=sin(2*pi*1*x1);
y2=sin(2*pi*1.2*x2);
y=[y1;y2];
% 执行连续小波变换
numVoices = 16; % 增加小波变换的频率分辨率
[cfs, frequencies] = cwt(y, 'amor', fs_acc, 'VoicesPerOctave', numVoices);
time=(1/fs_acc:1/fs_acc:length(y)/fs_acc)';
% 绘制云图
figure(2);
surface(time, frequencies, abs(cfs));
shading interp;
axis tight;
xlabel('时间 (s)');
ylabel('频率 (Hz)');
ylim([0 2])
title('连续小波变换的云图');
colorbar;