تبلیغات
باران الکترونیک - تغییر نرخ نمونه برداری سیگنال (طراحی در ‏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
پنجشنبه 20 اردیبهشت 1397 06:45 ب.ظ

Whoa all kinds of excellent material.
cialis prezzo in linea basso cialis 20 mg cut in half cialis from canada cialis cost cilas buying cialis in colombia generic cialis at the pharmacy safe dosage for cialis cialis herbs cialis with 2 days delivery
Viagra prices
پنجشنبه 6 اردیبهشت 1397 12:24 ق.ظ

Seriously plenty of fantastic facts.
buy viagra online with prescription buy viagra online rx. levitra where to buy viagra cheap where to buy viagra without prescription viagra dosage how to buy generic viagra online where can i buy viagra uk viagra generic online pharmacy buy viagra usa
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
آخرین پست ها