
اطلاعیه
Collapse
No announcement yet.
راهنمای در مورد شبیه سازیask,fsk,psk با سیمولیک مطلب
Collapse
X
-
پاسخ : راهنمای در مورد شبیه سازیask,fsk,psk با سیمولیک مطلب
سلام دوست عزیز
برای شبیه سازی این سیگنالیگها در متلب دستورات آماده ای به شرح زیر هست.
fskmod, fskdemod, pskmod, pskdemod و بطور کلی با نوشتن help modulate یا help demodulate در پنجره command متلب میتونید اطلاعات جامعی در مورد دستورات آماده متلب کسب کنید.
اما نوشتن کد اون هم کاری نداره!! به شرط اینکه با مبانی و روابط ریاضی اونها آشنایی داشته باشید.
من کد زیر رو برای نمونه میذارم که کافیه اون رو داخل یه دونه ام فایل کپی کنید و در دایرکتوری work ذخیره و سپس اجرا کنید.
توضیحات لازم رو داخل متن برنامه گذاشتم. در اینجا برای اینکه درک بهتری از عملکرد کانال نویزی روی سیگنال ارسالی داشته باشید پس از انتخاب یک نمونه تصادفی در ورودی، اثر کانال را در قالب یک نویز سفید گاوسی جمع شونده با توان دلخواه(برای SNR دلخواه) که البته میتونه فرمهای دیگری هم داشته باشه، با سیگنال اصلی جمع میزنیم و بعد از اون در گیرنده اون رو دریافت میکنیم و مولفه inphase و quadrature اون رو استخراج میکنیم و با یک تصمیم گیرنده معمولی اون رو به یکی از موقعیتهای منظومه نسبت میدهیم. همه این کارها در صفحه I/Q رسم شده تا درک بهتری از مساله داشته باشیم.
پیروز باشید.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%
% simulation BPSK,QPSK,8-PSK modulation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%
close all
clear all
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%
%construct M-PSK consellation where M=2,4 and 8
M=16;
for m=0:M-1
s(m+1)=cos(2*pi*m/M)+j*sin(2*pi*m/M);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%
%add channel effect on the signal as white gaussian noise(wgn)
SNR=10; %define channel SNR
s_sent=1+randint(1,1,M); %random sent symbol
rx=awgn(s(s_sent),SNR); %add channel SNR to the M-PSK modulated signal
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%
%calculate s_received symbol angle and use hard decision to detect it as
%s_detected
rx_angle=angle(rx) %received signal angle
err_min_ang=pi/M;%area of decision
s_detected=1;
if (rx_angle<-.75*pi || rx_angle>.75*pi)
s_detected=M/2+1;
else
for m=2:M
if(abs(rx_angle-angle(s(m)))) < err_min_ang
err_min_ang=abs(rx_angle-angle(s(m)));
s_detected=m;
end
end
end
hold on
figure(1)
title([num2str(M),'PSK constellation and the received signal with SNR=',num2str(SNR)]);
xlabel('in-phase'ylabel('quadrature'
;
axis([-2 2 -2 2]);
plot(real(rx),imag(rx),'*'
plot(real(s),imag(s),'ko'
grid;
دیدگاه
دیدگاه