MATLAB中如何对一个正弦信号加噪?

MATLAB中如何对一个正弦信号加噪?,第1张

可以将正弦信号在每个时刻的值加上噪声即可实现加噪的目的。

把白噪声叠加到信号上去:

function

[Y,NOISE]

=

noisegen(X,SNR)

%

noisegen

add

white

Gaussian

noise

to

a

signal.

%

[Y,

NOISE]

=

NOISEGEN(X,SNR)

adds

white

Gaussian

NOISE

to

X.

The

SNR

is

in

dB.

NOISE=randn(size(X))

NOISE=NOISE-mean(NOISE)

signal_power

=

1/length(X)*sum(X.*X)

noise_variance

=

signal_power

/

(

10^(SNR/10)

)

NOISE=sqrt(noise_variance)/std(NOISE)*NOISE

Y=X+NOISE

其中X是纯信号,SNR是要求的信噪比,Y是带噪信号,NOISE是叠加在信号上的噪声。

对于上面的通用程序,如果X是正弦信号,SNR是要求的信噪比,那么输出的Y就是正弦信号加噪后的信号,NOISE就是所添加的噪声信号。

经过低通滤波器将噪声过滤掉,在将过滤后的信号画成图象可得隐藏的正弦波;

双线性法设计低通滤波器:

fp=1000

fc=1200

as=100

ap=1

fs=22000

wp=2*fp/fs

wc=2*fc/fs

%归一化截止频率

[n,wn]=ellipord(wp,wc,ap,as)%求数字滤波器的最小阶数和归一化截止频率

[b,a]=ellip(n,ap,as,wn)%求传递函数的分子分母系数

d=filter(b,a,y)%滤波

plot(d)%画出滤波后图形

" 傅里叶变换实际上是将信号 x\left(t\right) 和一组不同频率的复正弦作内积,这一组复正弦即变换的基向量,而傅里叶系数或傅里叶变换是 x\left(t\right) 在这一组基向量上的投影。

" 正弦信号是最规则的信号,由幅度、相位及频率这三个参数即可完全确定。

" 正弦信号有许多好的性质,例如正交性

\int_{t}^{t+T}\sin\left(n\Omega_{0}t\right)\sin\left(m\Omega_{0}t\right)dt= \begin{cases} \frac{T}{2}, &\quad m=n \cr 0, &\quad m\neq n \end{cases}

T=\frac{1}{f_{0}}=\frac{2\pi}{2\pi f_{0}}=\frac{2\pi}{\Omega _{0}}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11686520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存