1樓:我是舞三
總體思路:設定篩選條件,將陣列中符合條件的元素篩選出來(可以篩選出元素值也可以篩選出元素對應的下標),然後將元素值賦值給另外一個陣列的元素
參考**:
clcclear all
close all
x = randi(10, 1, 5); % 原始資料
disp('x=');
disp(x);
y1 = -1 * ones(1, length(x)); % 儲存篩選出的結果,並初始化成不可能出現的結果
%-- 篩選符合條件的元素下標,並將對應元素存到y1 --%
ix = find(x>=3); % 例如,篩選出原始資料中大於3的元素的下標
if(isempty(ix))
disp('x的元素均不符合條件');
else
y1(1:length(ix)) = x(ix); % 將符合條件的元素存到y1中
y1( find(y1==-1) ) = ; % 剩餘元素刪除
disp('y1=');
disp(y1);
y2 = -1 * ones(1, length(x)); % 儲存篩選出的結果,並初始化成不可能出現的結果
%-- 篩選符合條件的元素值,並存入y2 --%
for i=1:length(x)
if(x(i)>=3) % 逐個檢測x的元素是否符合條件,把符合條件的元素值賦值給y2
y2(i) = x(i);
endend
y2( find(y2==-1) ) = ; % 剩餘元素刪除
disp('y2=');
disp(y2);
%----------------------------------%
輸出結果
x=7 1 9 10 7
y1=7 9 10 7
y2=7 9 10 7
2樓:我想呆會兒
小波的閾值去噪效果比較好。可以呼叫wden函式,比較簡單
本題中前面改一下比較直觀,可以把原始訊號輸出來subplot(2,2,1)後面去噪訊號subplot(2,2,2)頻譜圖subplot(2,2,3)後面可加程式
xd=wden(x,'rigrsure','s','sln',5,'sym8');
subplot(2,2,4);plot(xd);
title('去噪訊號');
err=x-xd;
函式wden的呼叫格式有以下兩種:
(1)[xd,cxd,lxd]=wden(x,tptr,sorh,scal,n,'wname')
(2)[xd,cxd,lxd]=wden(c,l,tptr,sorh,scal,n,'wname')
函式wden用於一維訊號的自動消噪。x為原始訊號,[c,l]為訊號的小波分解,n為小波分解的層數。
thr為閾值選擇規則:
*tptr='rigrsure',自適應閾值選擇使用stein的無偏風險估計原理。
*tptr='heursure',使用啟發式閾值選擇。
*tptr='sqtwolog',閾值等於sqrt(2*log(length(x))).
*tptr='minimaxi',用極大極小原理選擇閾值。
sorh是軟閾值或硬閾值的選擇(分別對應's'和'h')。
scal指所使用的閾值是否需要重新調整,包含下面三種:
*scal='one' 不調整;
*scal='sln' 根據第一層的係數進行噪聲層的估計來調整閾值。
*scal='mln' 根據不同的噪聲估計來調整閾值。
xd為消噪後的訊號,[cxd,lxd]為消噪後訊號的小波分解結構。
3樓:匿名使用者
山科同跟張老師上小波分析的路過
matlab對正弦訊號加入高斯白噪聲後如何使用傅立葉變換濾波?
4樓:
傅立葉也不能濾波啊。。。你要濾波需要用濾波器
如何在matlab裡面向訊號裡面加入白噪聲?
5樓: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('加高斯白噪訊號');
6樓:匿名使用者
在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))
7樓:匿名使用者
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')
8樓:日向淳正
l=length(y1);
noise=rand(1,l); %生成跟你的訊號一樣長度的白噪聲.
y=y1+noise; %加入白噪聲
怎樣用matlab畫出語音訊號的時域波形和頻譜圖和畫出加噪聲-3db的白噪聲後的波形、頻譜,濾波
matlab中如何給我的一段訊號加高斯白噪聲
9樓:匿名使用者
你這個是訊號波形資料嗎? 加噪聲一般是對模擬訊號加噪聲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 給訊號加高斯白噪聲
10樓:匿名使用者
一般是這樣的
如果一個訊號為x (向量),產生一個均值為0,方差為a的高斯白噪聲,noise = a*randn(size(x));
則噪聲訊號為
y = x + noise;
11樓:匿名使用者
給訊號x加白噪聲:
y=awgn(x,snr);函式
matlab對訊號加高斯白噪聲的方法,比如對一個正弦訊號,加入10db的噪聲,是噪聲,不是訊雜比
12樓:我的小名叫仙女
你這個是訊號波形資料嗎? 加噪聲一般是對模擬訊號加噪聲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')
13樓:匿名使用者
先計算訊號的功率譜密度,然後和10db噪聲一比,就可以求出訊雜比,使用matlab中的函式了
怎樣用matlab產生白噪聲訊號?
14樓:匿名使用者
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 = wgn(…,powertype) 指定p的單位。powertype可以是'dbw', 'dbm'或'linear'。線性強度(linear power)以瓦特(watt)為單位。
y = wgn(…,outputtype) 指定輸出型別。outputtype可以是'real'或'***plex'。
2. awgn:在某一訊號中加入高斯白噪聲
y = awgn(x,snr) 在訊號x中加入高斯白噪聲。訊雜比snr以db為單位。x的強度假定為0dbw。如果x是複數,就加入復噪聲。
y = awgn(x,snr,sigpower) 如果sigpower是數值,則其代表以dbw為單位的訊號強度;如果sigpower為'measured',則函式將在加入噪聲之前測定訊號強度。
y = awgn(x,snr,sigpower,state) 重置randn的狀態。
y = awgn(…,powertype) 指定snr和sigpower的單位。powertype可以是'db'或'linear'。如果powertype是'db',那麼snr以db為單位,而sigpower以dbw為單位。
如果powertype是'linear',那麼snr作為比值來度量,而sigpower以瓦特為單位
15樓:匿名使用者
xi=sqrt(0.1)*randn(100,1);
matlab中text函式,matlab中text函式
text函式 巨集在執行的時候去理解一個ansi字元取決於當windows的ansi字符集頁數 當位於不同的ansi 字符集頁數時,ansi字元擁有不同的意義。如,0xc4 在第1252頁 即 拉丁文 1 表示一個加上音符的a 而在第1253頁 希臘文 表示希臘字母delta 不同的理解導致了開發和...
matlab中訊號的功率怎麼計算
clear 前面需要給sita,w,a賦值。fs 1000 取樣頻率 n 0 1 fs 1 xn a sin w n sita window boxcar length xn 矩形窗 nfft 1024 pxx,f periodogram xn,window,nfft,fs 直接法 pow sum ...
matlab中a是什麼意思,matlab中a是什麼意思
表示遍歷所有,放在行上就是遍歷所有行,放在列上就是遍歷所有列,所以這個式子表達的就是取出所有的a元素,也就是取出a矩陣。matlab中a 是什麼意思 5 a 是把矩陣a轉換為一個行向量,就是一行。例如 a rand 2,3 a 0.6925 0.3965 0.78020.5567 0.0616 0....