matlab中如何對正弦訊號加噪

時間 2021-08-11 17:35:05

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就是所新增的噪聲訊號。

2樓:匿名使用者

matlab有自帶的噪聲生成函式,具體的不記得了,你可以用help noise命令檢視。

3樓:匿名使用者

fs=20000; %參樣頻率

f=50; %訊號頻率

ts=1/fs;%參樣時間

t=0:ts:4095*ts;

d=9.1; %噪聲強度

s=sin(2*pi*f*t); %訊號

x=s+sqrt(2*d)*randn(size(t)); %噪聲figure(1)

plot(t,s);

figure(2)

plot(t,x);

或者:fs=20000; %參樣頻率

f=50; %訊號頻率

ts=1/fs;%參樣時間

t=0:ts:4095*ts;

d=9.1; %噪聲強度

s=sin(2*pi*f*t); %訊號

x = awgn(s,-9);

figure(1)

plot(t,s);

figure(2)

plot(t,x);

matlab中如何在一個正弦訊號上人為新增一個已知的噪聲訊號 5

4樓:雪v歌

可以將正弦訊號在每個時刻的值加上噪聲即可實現加噪的目的。

把白噪聲疊加到訊號上去:

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就是所新增的噪聲訊號。

5樓:我行我素

把噪聲訊號和正弦訊號發過來,我給你加。

matlab中,給一個正弦訊號加上一個均值為0,方差為1的高斯白噪聲訊號,想用awgn函式,怎麼做?

6樓:匿名使用者

可以使用如下的函式實現

r = normrnd(mu,sigma)  (生成均值為 mu,標準差為 sigma 的正態隨機數

)r = normrnd(mu,sigma,m)  (生成 1× m 個正態隨機數)

r = normrnd(mu,sigma,m,n) (生成 m 行 n 列的 m × n 個正態隨機數)

假設輸入訊號為x,則給x加上一個均值為0,方差為1的高斯白噪聲訊號的方法為

y=x+normrnd(0,1);

7樓:手機使用者

對snr沒有要求的話就把它設成一個隨機數吧,但是什麼情況下你不關心snr呢

matlab對訊號加高斯白噪聲的方法,比如對一個正弦訊號,加入10db的噪聲,是噪聲,不是訊雜比

8樓:我的小名叫仙女

你這個是訊號波形資料嗎? 加噪聲一般是對模擬訊號加噪聲matlab有一個函式很方便加入高斯白噪聲x是訊號序列, y = awgn(x,snr) 在訊號x中加入高斯白噪聲,訊雜比snr以db為單位。x的強度假定為0dbw。

比如:x = sqrt(2)*sin(0:pi/8:6*pi);

y = awgn(x,10);

plot(x,'b');hold on; plot(y,'r')

9樓:匿名使用者

先計算訊號的功率譜密度,然後和10db噪聲一比,就可以求出訊雜比,使用matlab中的函式了

matlab中如何給我的一段訊號加高斯白噪聲

10樓:匿名使用者

你這個是訊號波形資料嗎? 加噪聲一般是對模擬訊號加噪聲matlab有一個函式很方便加入高斯白噪聲x是訊號序列, y = awgn(x,snr) 在訊號x中加入高斯白噪聲,訊雜比snr以db為單位。x的強度假定為0dbw。

比如:x = sqrt(2)*sin(0:pi/8:6*pi);

y = awgn(x,10);

plot(x,'b');hold on; plot(y,'r')

如何在matlab裡面向訊號裡面加入白噪聲?

11樓:go風影

y=awgn(x,snr),加性高斯白du噪函式,x原訊號,zhisnr是訊雜比,不知道你dao這個2%是能量

專還是幅屬值,如果是能量的話,snr=10*log(100/2);如果是幅值,snr=20*log(100/2);

**如下:

clc; clear ;

t=0:0.01:1;

y1=(pi/2)*cos(2*pi*t)+(pi/64)*cos(pi*t/8+pi/3);

snr=10*log(100/2); % 2%是能量比x=awgn(y1,snr);

subplot(211), plot(t,y1);

title('原訊號');

% 加入噪聲後有毛刺,但2%的噪聲有點小,毛刺不明顯。

subplot(212), plot(t,x);

title('加高斯白噪訊號');

12樓:匿名使用者

在matlab中無論是wgn還是baiawgn函式,實質du都是由randn函式產生

zhi的噪聲。即,wgn函式中調

dao用了randn函式,而版awgn函式中呼叫了wgn函式。

權根據awgn的實現**可以知道「向已知訊號新增某個訊雜比(snr)的高斯白噪聲」,

即:awgn(x,snr,』measured』,'linear』),命令的作用是對原訊號x新增訊雜比(比值)為snr的噪聲,在新增之前先估計訊號x的強度。

直接對原始訊號新增噪聲:

y=x+rand(length(x),1)y=x+randn(length(x),1))

13樓:匿名使用者

t=0:0.001:1;

y1=(pi/2)*cos(2*pi*t)+(pi/64)*cos(pi*t/8+pi/3);

temp=y1+0.02*y1.*rand(size(y1));

plot(t,y1,t,temp,'r')

14樓:日向淳正

l=length(y1);

noise=rand(1,l); %生成跟你的訊號一樣長度的白噪聲.

y=y1+noise; %加入白噪聲

問下再matlab中如何給一個隨機訊號加入噪聲

15樓:天雲一號

直接加上一個rand()就行了啊,如a是訊號資料,則加噪聲後的資料為b = a + rand();

當然rand()行列數要與a對應

用MATLAB產生正弦序列,訊號頻率200赫茲,訊號長度1S,取樣率1千赫茲

應該是指訊號的物理頻率,該訊號由3種頻率成分的正弦訊號組成。一種簡單的訊號生成方式如下 f1 100 訊號頻率hz f2 150 訊號頻率hz f3 200 訊號頻率hz fs 1000 取樣頻率hz n 20 取樣點數 t 0 n 1 fs 取樣時間s x1 sin 2 pi f1 t 訊號取樣值...

如何用matlab濾掉訊號中的小幅值白噪聲

1.wgn 產生高斯白噪聲 y wgn m,n,p 產生一個m行n列的高斯白噪聲的矩陣,p以dbw為單位指定輸出噪聲的強度。y wgn m,n,p,imp 以歐姆 ohm 為單位指定負載阻抗。y wgn m,n,p,imp,state 重置randn的狀態。在數值變數後還可附加一些標誌性引數 y w...

matlab如何求訊號的頻率特性

fft處理之後取imag就是相頻特性,abs就是幅頻特性 參考如下 fs 10000 t 0 1 fs 0.1 x sin 2 pi 50 t 0.5 cos 2 pi 200 t 0.5 sin 2 pi 270 t 幅頻特性圖 plot linspace 0,pi,1024 abs fft x,...