#簡單的數碼訊號插值、抽取及成型,mmse誤差分析
主題:對於乙個訊號,奈奎斯特取樣後的序列進行9倍插值,之後2倍抽取,選擇不同的公升余弦滾降因子插值濾波器,分析4.5倍插值後序列和實際取樣後的對應序列誤差情況。
此處的插值與抽取倍數均可調整,以實現不同分數倍的訊號插值。使用公升余弦滾降濾波器成型。
演算法流程圖如下:
需要注意雖然理論上奈奎斯特取樣頻率大於2倍頻即可,但實際**為了追求效果,最好大於10倍。
a = 5;
f0 = 9;
x0 = 0:0.001:6/9;
y0 = a * sin(2 * pi * f0 .* x0);
plot(x0,y0);
hold on
fn = 360;
dt = 1/fn;
t = 0:dt:6/9;
yn = a * sin(2 * pi * f0 .* t);
stem(t,yn);
title('奈奎斯特取樣後訊號圖');
xlabel('時間t');
ylabel('幅度a');
len = length(yn);
y1 = zeros(1,9 * len);
a = 1;
for n1 = 1:9 * len
if mod(n1 - 1,9) == 0
y1(n1) = yn(a);
a = a + 1;
endendfigure
x1 = 1:9 * len;
stem(x1,y1,'fill','r--');
title('9倍插值後訊號');
len1 = length(y1);
y2 = zeros(1,ceil(len1/2));
b = 1;
for n2 = 1:len1
if mod(n2-1,2) == 0
y2(b) = y1(n2);
b = b + 1;
endendfigure
stem(y2,'fill','r--');
title('2倍抽取後訊號');
h1 = rcosdesign(0.8,1,100);
h = rcosdesign(0.8,6,8);
figure;
plot(h,'k');
grid on;
xlabel('時間t');
ylabel('幅度a');
title('公升余弦滾降濾波器(滾降因子0.8)');
h2 = rcosdesign(0.2,1,20);
shaped2 = filter(h2,1,yn);
figure;
plot(shaped2,'k');
title('取樣成型後波形');
grid on;
shaped1 = filter(h1,1,y2);
figure;
plot(shaped1,'k');
title('插值抽取成型後波形');
grid on;
shaped2_error = zeros(1,100);
shaped1_error = zeros(1,100);
shaped1_error(1:100) =
shaped1(9:9:900)/(max(shaped1));
shaped2_error(1:100) =
shaped2(1:2:200)/(max(shaped2));
er = 0;
for error_cnt = 1:100
er = er + (shaped1_error(error_cnt) - shaped2_error(error_cnt)).^2;
enderror = sqrt(er / 100);
fprintf('均方根誤差為:%f',error);
% yn = fft(yn,length(t));
% mag0 = abs(yn);
% n0 = 0:length(t) - 1;
% f = n0 * fn / length(t);
% figure
% plot(f,mag0);
% title('奈奎斯特取樣後訊號頻譜圖');
% xlabel('頻率/hz');
% y1 = fft(y1);
% mag1 = abs(y1);
% n1 = 0:length(y1) - 1;
% f1 = n1 * fn / length(y1);
% figure
% plot(f1,mag1);
% title('9倍插值後訊號頻譜圖');
% xlabel('頻率/hz');
% y2 = fft(y2);
% mag2 = abs(y2);
% n2 = 0:length(y2) - 1;
% f2 = n2 * fn / length(y2);
% figure
% plot(f2,mag2);
% title('2倍抽取後訊號頻譜圖');
% xlabel('頻率/hz');
**結果:
此處僅舉公升余弦滾降因子為0.8一例。
以奈奎斯特取樣後成型恢復的波形為基準
mse為3.8%,誤差精度可以接受。
以上便是整個**流程,這裡僅對簡單正弦訊號進行了操作,讀者可以自行修改輸入訊號,插值,抽取,公升余弦滾降濾波器引數均可調,以實現不同的功能。
數字訊號處理小實驗 插值與抽取
通過二維序列的差值和抽取,設計乙個對自己 進行放縮的程式。要求顯示放縮前後對比圖。使用matlab中imread函式讀取後得到的是乙個三維矩陣,要想實現對彩色 的抽取和插值,就要在每個維度上都進行抽取和插值。同時,使用imread函式得到的矩陣是uint8型別的資料,考慮到抽取和插值運算的精度,將矩...
訊號的抽取和插值
減少抽樣率以去掉過多資料的過程稱為訊號的抽取 decimatim 增加抽樣率以增加資料的過程稱為訊號的插值 interpolation 抽取 插值及其二者相結合的使用便可實現訊號抽樣率的轉換。一般多速率變換傳輸系統結構 抽取,可以在傳輸的過程中減少傳輸的資料量,接收端進行恢復時進行插值,將訊號恢復成...
訊號的抽取和插值
減少抽樣率以去掉過多資料的過程稱為訊號的抽取 decimatim 增加抽樣率以增加資料的過程稱為訊號的插值 interpolation 抽取 插值及其二者相結合的使用便可實現訊號抽樣率的轉換。一般多速率變換傳輸系統結構 抽取,可以在傳輸的過程中減少傳輸的資料量,接收端進行恢復時進行插值,將訊號恢復成...