一個(gè)簡(jiǎn)單的示例:
設(shè)計(jì)Matlab程序,去掉左圖信號(hào)中大于20Hz的頻率,使其變?yōu)橛覉D。
% 1.生成原信號(hào)并繪圖
% 生成10s的信號(hào),每隔0.0001s生成1次
t1 = 0:0.0001:10;
% 原信號(hào)
y1 = 3*sin(2*pi*10*t1)+sin(2*pi*40*t1)+sin(2*pi*200*t1);
% 原信號(hào)時(shí)域圖 & 設(shè)置橫縱軸范圍 & 設(shè)置圖名、橫縱軸標(biāo)簽
subplot(321);
plot(t1,y1);
xlim([0 1]);
ylim([-6 6]);
title('原信號(hào)時(shí)域');
xlabel('時(shí)間(s)');
ylabel('幅值');
% 設(shè)置橫縱軸分度值
set(gca,'XTick',0:0.25:1);
set(gca,'YTick',-6:3:6);
% 2.模擬采樣
% 采樣時(shí)長(zhǎng)1s,采樣頻率100Hz
t2 = 0:0.01:1;
y2 = 3*sin(2*pi*10*t2)+sin(2*pi*40*t2)+sin(2*pi*200*t2);
% 采樣信號(hào)圖 & 設(shè)置橫縱軸范圍 & 設(shè)置圖名、橫縱軸標(biāo)簽 & 設(shè)置橫縱軸分度值
subplot(322);
plot(t2,y2);
xlim([0 1]);
ylim([-6 6]);
title('采樣信號(hào)波形');
xlabel('時(shí)間(s)');
ylabel('幅值');
set(gca,'XTick',0:0.25:1);
set(gca,'YTick',-6:3:6);
% 3.fft
% 采樣后信號(hào)的數(shù)據(jù)長(zhǎng)度
dataLength = length(y2);
% 對(duì)采樣后的信號(hào)進(jìn)行fft
y2FFT = fft(y2,dataLength);
% 求幅值
mag = abs(y2FFT);
% 幅值歸一化
mag = mag*2/dataLength;
pha = angle(y2FFT)*180/pi;
% 無(wú)效相位置0
for i = 1:dataLength
if (mag(1,i)<0.3)
pha(1,i) = 0;
end
end
% fft后的序列坐標(biāo)
n = 0:dataLength-1;
% 采樣頻率
fs = 1/0.01;
% 序列頻率
f = (0:dataLength-1)*fs/dataLength;
% fft頻域圖
% 繪制幅度譜,stem:繪制離散信號(hào)圖
subplot(323);
stem(f(1:dataLength/2),mag(1:dataLength/2));
xlim([0 50]);
ylim([0 4]);
set(gca,"XTick",0:10:50);
xlabel("頻率(Hz)");
title('幅度譜');
% 繪制相位譜
subplot(324);
stem(f(1:dataLength/2),pha(1:dataLength/2));
xlim([0 50]);
set(gca,'XTick',0:10:50);
xlabel("頻率(Hz)");
ylabel("相位");
title('相位譜');
% 低通濾波器濾波 詳見(jiàn)下面描述
% 載入設(shè)計(jì)的濾波器
load("my_filter.mat"); % 另存為的名字
% 濾波
% 濾波器系數(shù)存放于filtercoe數(shù)組中
filtercoe = my_filter; % 設(shè)計(jì)完濾波器,導(dǎo)出的名字
y_Filtered = filter(filtercoe,1,y2);
% 濾波后的時(shí)域圖
subplot(326);
plot(t2,y_Filtered);
xlim([0 1]);
ylim([-6 6]);
set(gca,'XTick',0:0.25:1);
set(gca,'YTick',-6:3:6);
title('濾波后時(shí)域');
xlabel('時(shí)間(s)');
ylabel('幅值');
注:
1. 第85行低通濾波器的設(shè)計(jì)需要在命令行窗口輸入filterDesigner以打開(kāi)濾波器設(shè)計(jì)窗口,如下圖:
在窗口中設(shè)置如下紅框中主要參數(shù),然后點(diǎn)擊設(shè)計(jì)濾波器:
生成成后,會(huì)出現(xiàn)粉框中的波形。
點(diǎn)擊文件-導(dǎo)出,點(diǎn)擊彈出窗口中的導(dǎo)出,在Num處命名導(dǎo)出到工作區(qū)的名字。
此時(shí)濾波器已經(jīng)導(dǎo)出到工作區(qū)中。
右擊工作區(qū)中導(dǎo)出的濾波器,另存為,之后便可通過(guò)該濾波器的名稱(chēng)導(dǎo)入到程序中使用。
運(yùn)行效果:
遺留問(wèn)題:
1. 圖3中存在頻譜泄露,后續(xù)學(xué)習(xí)如何解決;文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-696854.html
2. 程序中的相關(guān)設(shè)計(jì)仍在學(xué)習(xí);文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-696854.html
到了這里,關(guān)于Matlab信號(hào)處理1:模擬去除信號(hào)噪聲的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!