【有问不答】单点衰减曲线去噪(MATLAB)

21 篇文章 3 订阅

【有问不答】单点衰减曲线去噪(MATLAB)

by 今天不飞了

课代表想生成一个单点衰减曲线(信号),对其加入噪声后,测试各种平滑算法的效果。
好了,你看看是不是你想要的的。


生成单点衰减曲线

我也不懂啥叫单点衰减曲线,但是只要有表达式,就能给你整出来

x ( t ) = C τ ∑ n = 1 + ∞ e x p ( − n 2 t τ ) x(t) =\frac{C}{\tau} \sum_{n=1}^{+\infty} exp(-\frac{n^2t}{\tau}) x(t)=τCn=1+exp(τn2t)

我们注意到这里的求和符号直接拉满,干到 + ∞ +\infty +,这……
由于数学功底不行,不知道怎么搞,只能想到如下方法

我们画出 f ( x ) = e x p ( − x ) f(x) = exp(-x) f(x)=exp(x) 的曲线,发现 x < − 10 x<-10 x<10 基本都等于0了,所以我们加到 x = − 10 x=-10 x=10 就行了。
在这里插入图片描述
− n 2 t / τ = x > − 10 -n^2t/\tau =x>-10 n2t/τ=x>10 ,得 n < 10 τ / t n <\sqrt{10\tau/t} n<10τ/t

那么我们用for循环来完成求和部分,如下

function out = kernel(t,tao)
N = floor(sqrt(10*tao/t));
out = 0;
for n = 1:N
    out = out+exp(-n^2*t/tao);
end
end

当然循环可以用矩阵运算替换

function out = kernel(t,tao)
N = floor(sqrt(10*tao/t));
n = 1:N;
out = exp(-n.^2/t/tao)
end

接下来就可以生成单点衰减曲线了

%% 生成衰减信号
% 设置参数
iter = 0.1;
T = iter:iter:10;
C = 10;
tao = 1;
% 生成
signalLen = length(T);
signal = zeros(signalLen,1);
for n = 1:signalLen
    signal(n) = C/tao*kernel(T(n),tao);
end

figure
plot(signal),title('衰减信号')

原来就长这个样
在这里插入图片描述


添加噪声并平滑

噪声我就简单实用高斯白噪声了啊,参数你自己搞。平滑对比

%% 加入噪声
a = 0;
b = 0.1;
noise = a + b .* randn(signalLen,1);
signalNoise = signal+noise;

figure
subplot(311),plot(signal),title('原始信号')
subplot(312),plot(noise),title('噪声')
subplot(313),plot(signalNoise),title('含噪声信号')

%% 滤波
% FIR滤波
b = fir1(31,0.4,kaiser(32,4.55))';
s1 = filtfilt(b,1,signalNoise);

% 中值滤波
s2 = medfilt1(signalNoise,5);

% 均值滤波
s3 = conv(signalNoise,fspecial('average',[1,5]),'same');
s3(1:2) = signalNoise(1:2);

figure
subplot(411),plot(signalNoise),title('含噪声信号')
subplot(412),plot(s1),title('FIR滤波')
subplot(413),plot(s2),title('中值滤波')
subplot(414),plot(s3),title('均值滤波')

% 频谱
f0 = abs(fftshift(fft(signalNoise)));
f1 = abs(fftshift(fft(s1)));
f2 = abs(fftshift(fft(s2)));
f3 = abs(fftshift(fft(s3)));

figure
subplot(411),plot(f0),title('含噪声信号频谱')
subplot(412),plot(f1),title('FIR滤波后频谱')
subplot(413),plot(f2),title('中值滤波后频谱')
subplot(414),plot(f3),title('均值滤波后频谱')

结果如下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

其他

课代表还有其他问题吗?反正问了我也不会回答。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值