Sabtu, 03 Desember 2011

Program Matlab untuk NRZ-M PCM Waveforms

Berikut merupakan program untuk membuat program Matlab NRZ-M :
%NRZ-M
clear all;clc;
x=[1 0 1 1 0 0 0 1 1 0];    %matriks inputan x
n=length(x);    %mendapat jumlah isi var x
t=0:1/16:n-1/16;    %mengatur sampling
x(1)=1;
xx=x;
for k=2:n;
    if x(k-1)==0 & x(k)==1;
        xx(k)=-1;
    end
end
m=xx;
for k=1:n;
    if xx(k)==0;
        m(k)=1;
    end
end
p=ones(16,1);     %matriks 16x1 yg berisi nilai 1
a=p*m;
d=reshape(a,1,[]);
z=d;
figure(1)
subplot(211)
plot (t,d);title('NRZ-M')
axis([0 10 -2 2])
grid on

subplot(212)
s=fft(d,1024);
 f=0:1024-1;
plot(f,20*log10(abs(s)))
axis([0 1024 -60 40])
grid on

Dan berikut hasil keluarannya :

Program Matlab untuk mencari BER pada QASK

Berikut ini merupakan suatu program untuk mencari BER pada Modulasi QASK. Berikut program Matlabnya :

%program QASK
clear all;clc;

%Transmitter
jmlbit=100000;
bitdata=randint(1,jmlbit,[0 1],1);
map=reshape(bitdata,2,[]);
x=map';
for n=1:(jmlbit/2)
    if sum(x(n,:))==0;
        bit(:,n)=1;
    elseif x(n,1)<x(n,2);      
        bit(:,n)=3;
    elseif x(n,1)>x(n,2);
        bit(:,n)=7;
    else sum(x(n,:))==1;
        bit(:,n)=5;
    end
end

t=0:1/64:(1-1/64);
b1=sqrt(2)*cos(2*pi*t);
ask=b1'*bit;
Qask=reshape(ask,1,[]);

%Receiver
for SNR=0:15;
rqask=awgn(Qask,SNR,10*log10(64));
tt=0:length(rqask)-1;
tt=tt/64;
r=reshape(rqask,64,[]);
z=(b1*r/64);
z1=round(z);     %membulatkan nilai keatas
for n=1:(jmlbit/2);
    if z1(1,n)<2;
        bitrec(n,:)=[0 0];
    elseif z1(1,n)>2&&z1(1,n)<4;
        bitrec(n,:)=[0 1];
    elseif z1(1,n)>4&&z1(1,n)<6;
        bitrec(n,:)=[1 1];
    else z1(1,n)>6;
        bitrec(n,:)=[1 0];
    end
end
dataest=reshape(bitrec',1,[]);
[N(1,SNR+1),BER(1,SNR+1)]=biterr(dataest,bitdata);
end

SNR=0:15;
figure(1)
semilogy(SNR,BER);
     grid on;


Dan berikut hasil keluarannya :