تبلیغات
باران الکترونیک - تغییر نرخ نمونه برداری سیگنال (طراحی در ‏MATLAB، پیاده سازی در ‏DSP‏)‏ قسمت دوم

برنامه M-file برای تغییر نرخ نمونه برداری سیگنال

اکنون می­خواهیم با نوشتن چند خط برنامه متلب یک سیگنال سینوسی با فرکانس KHz 1/5 که با نرخ KHz‏‏8   نمونه برداری شده است را تولید می­ کنیم. سپس نرخ نمونه برداری سیگنال را به KHz‏ 9/6 افزایش میدهیم.

مقدار دهی اولیه برنامه

%% Initialization

up_sample = 6;

down_sample = 5;

Fs= 8000;                       % Sampling frequency

T = 1/Fs;                       % Sample time

L = 1000;                       % Length of signal

t = (0:L-1)*T;                  % Time vector

1) تولید سیگنال سینوسی با فرکانس ‏KHz‏ 5/1 و نرخ نمونه برداری ‏KHz‏‏8‏

%% Produce input: sin 1.5 KHz, sample rate 8000

x=round(2^15*sin(2*pi*1500*t));

i=find(x>2^15-1);

x(i)=2^15-1;

i=find(x<-2^15);

x(i)=2^15;

plot(1000*t(1:50),x(1:50))

title('Sin 1.5 KHz, Sample Rate : 8KHz')

xlabel('time (milliseconds)')

% Plot frequency of signal

NFFT = 2^nextpow2(L); % Next power of 2 from length of y

X = fft(x,NFFT)/L;

f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.

figure

plot(f,2*abs(X(1:NFFT/2+1)))

title('Single-Sided Amplitude Spectrum of x(t)')

xlabel('Frequency (Hz)')

ylabel('|X(f)|')

بقیه مقاله در ادامه مطلب


2) اضافه کردن صفر بین نمونه های سیگنال

%% Upsampling

% Increase input sample rate: sin 1.5 KHz, sample rate 8000 x up_sample

%zero pading = 6 - 1 = 5

xr = reshape([x' zeros(length(x),up_sample-1)]',up_sample*length(x),1)';

figure

stem(xr(1:100),'DisplayName','xr');figure(gcf)

NFFT = 2^nextpow2(L*up_sample); % Next power of 2 from length of y

Xr = fft(xr,NFFT)/(L*up_sample);

f = (Fs/2)*up_sample*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.

figure

plot(f,2*abs(Xr(1:NFFT/2+1)))

title('Single-Sided Amplitude Spectrum of xr(t)')

xlabel('Frequency (Hz)')

ylabel('|Xr(f)|')



3) فیلتر کردن سیگنال

%% Filtering

b=1;

t = (0:L*up_sample-1)*T/up_sample;

lh=length(h);

y = filter(h,b,xr);

figure

plot(1000*t(1:300),y(1:300))

title('Sin 1.5 KHz, Sample Rate : 48KHz')

xlabel('time (milliseconds)')

figure

freqz(h)

NFFT = 2^nextpow2(L*up_sample); % Next power of 2 from length of y

Y = fft(y,NFFT)/(L*up_sample);

f = (Fs/2)*up_sample*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.

figure

plot(f,2*abs(Y(1:NFFT/2+1)))

title('Single-Sided Amplitude Spectrum of y(t)')

xlabel('Frequency (Hz)')

ylabel('|Y(f)|')

4) فیلتر کردن سیگنال با استفاده از ضرایب ممیز ثابت (Fixed-Point)

%% Conver filter coef to Q15 format

h_new=round(h*2^15);

y_new = filter(h_new,b,xr);

figure

plot(1000*t(1:300),y_new(1:300))

title('Sin 1.5 KHz, Sample Rate : 48KHz in Q15 format')

xlabel('time (milliseconds)')

figure

freqz(h_new)

Y_NEW = fft(y_new,NFFT)/L;

% Plot single-sided amplitude spectrum.

figure

plot(f,2*abs(Y_NEW(1:NFFT/2+1)))

title('Single-Sided Amplitude Spectrum of x(t)')

xlabel('Frequency (Hz)')

ylabel('|Y_NEW(f)|')


5) کاهش نرخ نمونه برداری سیگنال برای رسیدن به نرخ KHz‏ ‏9/6 ‏

%% Downsampling

t = (0:L*up_sample/down_sample-1)*T/up_sample*down_sample;

yd=downsample(y_new,down_sample);

figure

plot(1000*t(1:50),yd(1:50))

title('Sin 1.5 KHz, Sample Rate : 9.6KHz')

xlabel('time (milliseconds)')

NFFT = 2^nextpow2(L*up_sample/down_sample);% Next power of 2 from length of y

YD = fft(yd,NFFT)/(L*up_sample/down_sample);

f = (Fs/2)*up_sample/down_sample*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.

figure

plot(f,2*abs(YD(1:NFFT/2+1)))

title('Single-Sided Amplitude Spectrum of yd(t)')

xlabel('Frequency (Hz)')

ylabel('|YD(f)|')


6) ذخیره سیگنال ورودی بلوک در فایل sin_1k5.txt

%% Write Sin 1KHz, 8000 sample rate to file

Lx=length(x);

fid=fopen(' sin_1k5.txt','w');

fprintf(fid,'int input[%d] = {', Lx);

fprintf(fid,'%d,',x);

fprintf(fid,'};');

fclose(fid);

7) ذخیره فیلتر با ضرایب صحیح شده در فایل coef.h

%% Save filter Coeficient to file

fid=fopen('coef.h','w');

fprintf(fid,'#pragma DATA_SECTION (coef,".COEF")\n');

fprintf(fid,'short h[%d] = {', lh);

fprintf(fid,'%d, ',h_new);

fprintf(fid,'\n};');

fclose(fid);



نظرات()   
   
buy cialis online cheap
دوشنبه 9 مهر 1397 01:08 ب.ظ

Truly loads of superb tips.
cilas cialis canadian drugs click here cialis daily uk cialis 5mg billiger cialis free trial cialis 5 mg effetti collateral cialis wir preise interactions for cialis venta cialis en espaa achat cialis en europe
http://viagravonline.com/
چهارشنبه 28 شهریور 1397 08:17 ق.ظ

Thanks! Lots of knowledge.

cialis cuantos mg hay trusted tabled cialis softabs are there generic cialis generic cialis levitra prezzo di cialis in bulgaria cialis online nederland rezeptfrei cialis apotheke canadian drugs generic cialis compare prices cialis uk dosagem ideal cialis
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
آخرین پست ها