Selasa, 14 Februari 2012

Program Matlab RZ-AMI

Berikut Listing program untuk RZ-AMI :
%RZ-AMI
x=[1 0 1 1 0 0 0 1 1 0];
p1=ones(8,1);
p2=zeros(4,1);
n=length(x);
t=0:1/16:n-1/16;
x(1)=1;
xx=x;
for k=2:n;
    if x(k-1)==0 & x(k)==1;
        xx(k)=-1;
    end
end
p=[p2;p1;p2];
a=p*xx;
d=reshape(a,1,[]);
z=d;
figure(3)
subplot(211)
plot (t,d);title('RZ-AMI')
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

Berikut keluarannya : 

Senin, 16 Januari 2012

Melihat Sinyal Voice dan Unvoiced

Nah, bgini nih caranya melihat bentuk sinyal voice dan unvoiced dari suara kita. Pertama yang harus kamu lakuin yaitu rekam suara kamu dalam bentuk .wav, lalu ketik deh lisitng program berikut lewat Matlab :
Listing Program :
clear all;clc;
[y1,f1,bits]=wavread('yan1_converted.wav');
sound(y1,f1)
l=length(y1);
t=[0:(l-1)]/f1;
figure(1), plot(t,y1);
title('sinyal "yanuar rohman"');
xlabel('Waktu (secons)');
ylabel('Amplitudo');
grid on;


Setelah itu, anda running program diatas. Berikut tampilan sinyalnya :


Nah,, sekarang untuk melihat sinyal voice adalah dengan cara sebagai berikut :
1. Pada saat perekaman, panjangkan suara anda pada huruf vokal yaitu : a,i,u,e, atau o.
2. Misal nama saya "yanuar rohman". maka di lafadskan seperti ini : "yaaaaaaaaanuar rohman"
3. Cara diatas digunakan utk menandai huruf vokal yg akan kita lihat. 

4. Lalu coba anda zoom dari siyal sebelumnya, yaitu zoom tepat pada huruf vokal saja. Pada sinyal pertama yaitu pada waktu t=1,5s sampai t=2,75s. Zoom sampai mendapatkan sinyal seperti dibawah ini : "Ingat : diusahakan zoom sedekat mungkin atau dengan selisih waktu yang kecil". Maka, didapat sinyal seperti di bawah ini :

Pada unvoiced juga anda lakukan seperti diatas, namun pada huruf2 selain huruf vokal. Bisa dilakukan pada huruf seperti r,s, atau yg lain. Dan berikut sinyal dihasilkannya : "Ini pada huruf "r".


"Selamat Mencoba"... thanx.



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 :