?? cyclespinning.m
字號:
clear;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 1.原始信號
f=50; % 信號頻率
fs=800; % 采樣頻率
N=128; % 采樣點
% 信號賦值
n=1:N;
y=sin(2*pi*f*n/fs);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 2.噪聲
noise=0.4*rand(1,128);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 3.染噪信號
y_noise=y+noise;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 4.硬消噪采用cycle_spinning技術(shù)
% 累加量
z5=zeros(1,N);
% 平移變換頻移法
for i=1:N;
z=circshift(y_noise.',i-1).'; % 源信號右平移
[z1,z2]=lwt(z,'db3'); % 小波正變換
z2=zeros(1,N/2); % 高頻分量全部為零(主要噪聲,硬消噪)
z3=ilwt(z1,z2,'db3'); % 小波反變換
z4=circshift(z3.',-(i-1)).'; % 變換后信號左平移
z5=z5+z4/N; % 平均
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 5.顯示
error=norm(y-z5)/norm(y); % 相對誤差
figure(1);
subplot(2,1,1)
plot(y,'r');
legend('源信號');
subplot(2,1,2);
plot(y_noise);
legend('染噪信號');
figure(2);
subplot(2,1,1)
plot(y,'r');
legend('源信號');
title(error);
subplot(2,1,2);
plot(z5);
legend('消噪后信號');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -