Advance Encryption Standard in Matlab


Di matlab tidak tersedia kriptografi library ataupun script yang dapat digunakan secara langsung oleh sebab itu kita perlu menulis sendiri algoritma kriptografi yang kita inginkan, AES advance Encryption Standard yang digunakan saat ini, hampir sudah 16 tahun algoritma ini digunakan sejak diperkenalkan pada tahun 2001 dengan nama Rinjadel. Salah satu sumber yang dapat digunakan untuk implementasi algoritma ini adalah http://buchholz.hs-bremen.de/aes/schluessel.htm disini Prof Buchholz sangat jelas membuat algoritma AES-128 dalam pemograman matlab sekaligus terdapat pdf yang menjelaskan implementasi AES pada matlab tersebut.

Simulasi Kode Hamming menggunakan modulasi BPSK


Kode Hamming adalah salah satu metode untuk error correction. Kali ini kita ingin mencoba simulasi melalui simulink bagaimana jika Hamming digunakan pada modulasi digital seperti BPSK yang ditransmisikan melewati kanal AWGN. Berikut Simulasi nya:
Screenshot from 2016-02-29 13:17:44

Screenshot from 2016-02-29 13:18:59

Kode Hamming yang kita gunakan adalah 31,26 disini nampak BER menurun setelah melewati Eb/No = 4, dan setelah Eb/No =8 sudah tidak terdapat BER. Berikut file simulink dan mfile

Simulink File: https://www.dropbox.com/s/azcw1frcx8s1hpb/Lab_PKU_BPSK_Hamming.mdl?dl=0

mfile: https://www.dropbox.com/s/sr348gtuij8sctk/Run_puk.m?dl=0

note: run mfile after that you can get the graphic

Modulasi Analog dan Modulasi Digital dengan Input .wav (Simulink)


Kali ini kita mendapat tugas, bagaimana mentransmisikan sinyal suara .wav menggunakan Modulasi Digital dan Modulasi Analog dalam simulink. Dengarkan hasil kualitas suaranya!

Screenshot from 2016-01-31 11:27:56

Skema simulink diatas adalah satu cara untuk mentransmisikan data menggunakan modulasi Analog dan Digital, bagian atas adalah modulasi Analog menggunakan SSB AM dan Bagian bawah adalah digital mengunakan DBPSK. Perlu diketahui untuk input modulasi digital data merupakan data diskrit atau data digital. Oleh sebab itu kita memerlukan konversi dari bentuk suara ke bentuk diskrit/digital.

Hal ini sering disebut ADC (analog to Digital Converter) namun saya tidak ingin menyebutkan di simulasi ini adalah ADC karena pada dasarnya file .wav ini sendiri sudah dalam bentuk digital/diskrit karena sudah tersimpan didalam disk berupa file digital berbentuk .wav. Sejenak kita lupakan tentang kontroversi ADC ini sendiri. kembali kedalam modulasi

Sebelum masuk ke dalam modulasi digital kita menambahkan blok Uniform Encoder dan integer to bit. Blok Uniform Encoder ini merupakan proses Kuantisasi yang menggunakan standart ITU-T Recommendation G.701. Hal ini lazim digunakan pada data file suara yang tidak terkompresi.

Setelah file terkuantisasi dalam bentuk diskrit, kita perlu merubah nilai nilai diskrit tersebut ke bentuk digital atau binary. Blok yang kita bisa gunakan adalah Blok Integer to Bit. Sebenarnya kurang tepat juga kita mengatakan blok tersebut adalah blok yang mengubah bentuk nilai integer kdealam bentuk binary karena hasil quantisasi bisa dalam bentuk floating point atau nilai angka berkoma, namun jangan terlalu pusing dengan intepretasi tipe variable Integer atau Floating sebab di dalam blok Uniform encoder dan Integer to Bit kita bisa mensetting berapa bit yang akan kita gunakan. yang kita gunakan dalam simulasi ini adalah 8 bit karena encoder yang digunakan dari file .wav itu sendiri 8 bit.

Dimana proses sampling? sebenarnya proses sampling ada didalam file itu sendiri yaitu 8Khz. Jika kita runut kembali proses sampling-Kuantisasi-Encoding adalah proses ADC, yang kita simulasikan kembali di Simulink, ya kita hanya mensimulasikan kembali tanpa sebenarnya melakukan proses dari ADC itu sendiri dikarenakan sebenarnya proses ADC itu sendiri sudah terjadi disaat kita merekam suara tersebut

File Simulink dapat didowload dilink berikut, run file simulink tersebut dan bandingkan suaranya, kita juga bisa bandigkan hasi dari grafik waktu ataupun grafik frequency disetiap stepnya menggunakan block spectrum dan time scope.

File Simulink
File .wav (sumber )

Respon Impuls Filter Digital Matlab Simullink


Sebagai contoh kita diberikan tugas, buat skema respon impuls filter digital (direct Form 1) dibawah ini pada simulink

vcxz

dengan spesifikasi sebagai berikut

Filter BPF (Wstop1 = 0.0625, Wstop2=0.0875, Wpass1=0.2625, Wpass2=0.2875), Rp = 1dB, Rs = 60dB

pada dasarnya kita dapat membuat implementasi dalam code matlab secara mudah dan langsung sebagai berikut:

Sebagai contoh kita menggunakan sepesifikasi filter Band Pass Filter BPF dengan spesifikasi diatas

clc, clear all
Ws = [0.0625 0.2875];
Wp = [0.0875 0.2625];
Rp = 1;
Rs = 60;
[n, Wn]= ellipord(Wp, Ws, Rp, Rs);
[b, a] = ellip(n, Rp, Rs,  Wn);
t=0:0.01:1;
X=1*sin(2*pi.*t);
y = filter(b,a,X);
figure,
freqz(b,a)
figure,
subplot(2,1,1)
plot(t,X)
subplot(2,1,2)
plot(t,y), grid on

hasil grafik yang kita dapatkan adalah, sebagai berikut
Screenshot from 2016-01-31 10:39:33
Respon Magnitude dan Fasa Filter yg ditampilkan melalui freqz(b,a)

Screenshot from 2016-01-31 10:40:43
grafik 1 dalah grafik sinyal input berupa sinusiodal dan grafik dibawahnya adalah grafik sinyal output yang telah terfilter menggunakan y = filter(b,a,X);

Nilai a (denumerator) dan b (numerator)

a =

1.0e+03 *

Columns 1 through 6

0.0010 -0.0114 0.0625 -0.2155 0.5241 -0.9507

Columns 7 through 12

1.3259 -1.4439 1.2337 -0.8231 0.4222 -0.1615

Columns 13 through 15

0.0436 -0.0074 0.0006

>> b

b =

Columns 1 through 6

0.0021 -0.0182 0.0758 -0.1945 0.3376 -0.3977

Columns 7 through 12

0.2769 0.0000 -0.2769 0.3977 -0.3376 0.1945

Columns 13 through 15

-0.0758 0.0182 -0.0021

hasil tersebut sudah cukup untuk kita mengetahui bagaimana membuat filter dan menggunakan filter tersebut dalam program matlab, namun bagaimana untuk di simulink
Disimulink setidaknya ada 3 cara yaitu menggunakan Filter FDA tools, Discrete filter block dan membuat response impluse sendiri. Namun dengan menggunakan Discrete filter block dan membuat response impluse sendiri kita harus mencari nilai a dan b terlebih dahulu bisa menggunakan code diatas ata FDA tools, berikut simulasi pada simulink:

Screenshot from 2016-01-31 10:51:25
simulink block

Screenshot from 2016-01-31 10:51:53
hasil input dan output

jika kita perhatikan file diatas mengapa hasil filter dari grafik ke 2 berbeda dengan grafik ke 3 & 4? hal tersebut terjadi karena perbedaan penggunaan direct form dalam implementasi tranformasi Z pada filter, Grafik 2 atau hasil Dari FDA tool box menggunakan direct form II sebagai mana ditampilkan ada screenshoot berikut:
Screenshot from 2016-01-31 11:06:25

Sedangkan pada grafik 3 dan 4 kita menggunakan Direct form I, tentunya kita dapat memodifikasi design kita menggunakan Direct form I atau Direct Form II sesuai dengan kebutuhan kita, selain perbedaan pada Direct form, juga terdapat perbedaan pada ordo yang digunakan pada FDA toolboox orde yang digunakan sebanyak 18 sedangkan pada grafik 3&4 menggunakan ordo sebanyak 15. Tentunya kita bisa mendalami lagi mengenai parameter parameter lainnya pada filter digital

file dapat didownload di link berikut:
File Simulink https://www.dropbox.com/s/wn5mo8bqbhgxuif/FilterBPFPro2x1.mdl?dl=0
File mfile https://www.dropbox.com/s/z9k5014zpcbahfy/Set_parameter.m?dl=0

Menggambar kurva 2D, kurva 3D dan menghitung integral pada matlab


contoh soal sebagai berikut (sumber https://www.facebook.com/groups/570918222980206/)
12645270_1218062701556010_5345357511037463031_n

clear, close all, clc
%No1 http://www.mathworks.com/help/matlab/ref/plot.html
x=-10:0.1:10;
y1=sqrt(49+4.*x.^2);
y2=sqrt(64+3.*x.^2);
plot(x,y1),hold on, grid on
plot(x,y2,'r')
%No2 http://www.mathworks.com/help/matlab/ref/plot3.html
t=0:0.1:2*pi;
x=1+cos(t);
y=2+sin(t);
z=1-cos(2.*t);
figure
plot3(x,y,z), grid on
%No3a http://www.mathworks.com/help/symbolic/int.html
syms x y
pretty(int(2*x*y*exp(2*y),y))
%No3b http://www.mathworks.com/help/matlab/ref/integral.html
fun = @(x,y) 10-2.*x.^2-y.^2
q = integral2(fun,-4,5,-5,5)
%No3c http://www.mathworks.com/help/symbolic/diff.html
syms x
diff((1/2)*x*y*exp(2*y),y)
%No3d http://www.mathworks.com/help/symbolic/diff.html
syms x y
diff(diff(exp(-x^3-y)))

Menghitung Korelasi Horizontal Vertical dan Diagonal pada Citra Digital


Korelasi pixel tetangga pada citra digital adalah suatu cara untuk menemukan hubungan nilai antara 2 pixel. Dalam hal ini kita bisa katakan hubungan antara Horizontal Vertical dan Diagonal. Salah satu artikel yang membahas hal tersebut Tang Hongmei; Han Liying; He Yu; Wang Xia, “An improved compound image encryption scheme,” in Computer and Communication Technologies in Agriculture Engineering (CCTAE), 2010 International Conference On , vol.3, no., pp.128-131, 12-13 June 2010
Di artikel tersebut di bagian C Correlation coefficient analysis disebutkan sebagai berikut

Screenshot from 2016-01-18 18:33:34
Screenshot from 2016-01-18 18:37:15

berangkat dari formula dan grafik tersebut, kita dapat menghitung nilai korelasi dan menampilkan nilai korelasi mengggunakan matlab sebagai berikut
sebagai contoh: saya mempunyai 2 images (image original dan image yang sudah terenkripsi) kita ingin mendapatkan nilai korelasi dari image original dan encrypted image (variable r dan r2) serta memplot korelasi antar tetangga tersebut, berikut scriptnya

%horizontal
clear all, close all
imrgb_o=double(imread('kodim23.png'));
imrgb_r=double(imread('Encrypt_DES_kodim23.png'));
imgray_o=sum(imrgb_o,3)/3; 
imgray_r=sum(imrgb_r,3)/3; 
[As Bs]=size(imgray_o);
x=imgray_o;
L=As*Bs;
x_r=reshape(x',1,L)';
y_r=circshift(x_r,-1);
figure4 = figure;
axes4 = axes('Parent',figure4)
hold(axes4,'all');
for i=1:L
    plot(x_r(i),y_r(i)), hold on
end
title('Horizontal Correlation Original Image')
saveas(figure4,'Horizontal Correlation Original Image.png') 
close (figure4)
x_mean=mean(x_r);
y_mean=mean(y_r);
for i=1:L
    A(i,1)=(x_r(i,1)-x_mean)*(y_r(i,1)-y_mean);
end
ConvA=sum(A)/L;
for i=1:L
    DA_x(i,1)=(x_r(i,1)-x_mean).^2;
end
for i=1:L
    DA_y(i,1)=(y_r(i,1)-y_mean).^2;
end
D_x=sum(DA_x)/L;
D_y=sum(DA_y)/L
r=ConvA/(sqrt(D_x*D_y))
%%%%%%%%%%%%%%%%%%%%%%%%%%%
x2=imgray_r;
x2_r=reshape(x2',1,L)';
y2_r=circshift(x2_r,-1);
y2_r(1,1)=0;
figure5 = figure;
axes5 = axes('Parent',figure5)
hold(axes5,'all');
for i=1:L
    plot(x2_r(i),y2_r(i)), hold on
end
title('Horizontal Correlation Encrypted Image by DES')
saveas(figure5,'Horizontal Correlation Encrypted Image by DES.png') 
close (figure5)
x2_mean=mean(x2_r);
y2_mean=mean(y2_r);
for i=1:L
    A2(i,1)=(x2_r(i,1)-x2_mean)*(y2_r(i,1)-y2_mean);
end
ConvA2=sum(A2)/L;
for i=1:L
    DA2_x(i,1)=(x2_r(i,1)-x2_mean).^2;
end
for i=1:L
    DA2_y(i,1)=(y2_r(i,1)-y2_mean).^2;
end
D_x2=sum(DA2_x)/L;
D_y2=sum(DA2_y)/L;
r2=ConvA2/(sqrt(D_x2*D_y2))
save('Konv_horzontal.mat','r','r2')

Vertical Correlation Encrypted Image by DES

Vertical Correlation Original Image

%Vertikal
clear all
imrgb_o=double(imread('kodim23.png'));
imrgb_r=double(imread('Encrypt_DES_kodim23.png'));
imgray_o=sum(imrgb_o,3)/3; 
imgray_r=sum(imrgb_r,3)/3; 
[As Bs]=size(imgray_o);
x=imgray_o;
L=As*Bs;
x_r=reshape(x',1,L)';
y_r=circshift(x_r,-Bs);
figure7 = figure;
axes7 = axes('Parent',figure7)
hold(axes7,'all');
for i=1:L
    plot(x_r(i),y_r(i)), hold on
end
title('Vertical Correlation Original Image')
saveas(figure7,'Vertical Correlation Original Image.png') 
close (figure7)
x_mean=mean(x_r);
y_mean=mean(y_r);
for i=1:L
    A(i,1)=(x_r(i,1)-x_mean)*(y_r(i,1)-y_mean);
end
ConvA=sum(A)/L;
for i=1:L
    DA_x(i,1)=(x_r(i,1)-x_mean).^2;
end
for i=1:L
    DA_y(i,1)=(y_r(i,1)-y_mean).^2;
end
D_x=sum(DA_x)/L;
D_y=sum(DA_y)/L
r=ConvA/(sqrt(D_x*D_y))
%%%%%%%%%%%%%%%%%%%%%%%%%%%
x2=imgray_r;
% x2_r=reshape(x2',1,L)';
% y2_r=circshift(x2_r,-1);
% y2_r(1,1)=0;
x2_r=reshape(x2',1,L)';
y2_r=circshift(x2_r,-Bs);
figure8 = figure;
axes8 = axes('Parent',figure8)
hold(axes8,'all');
for i=1:L
    plot(x2_r(i),y2_r(i)), hold on
end
title('Vertical Correlation Encrypted Image by DES')
saveas(figure8,'Vertical Correlation Encrypted Image by DES.png') 
close (figure8)
x2_mean=mean(x2_r);
y2_mean=mean(y2_r);
for i=1:L
    A2(i,1)=(x2_r(i,1)-x2_mean)*(y2_r(i,1)-y2_mean);
end
ConvA2=sum(A2)/L;
for i=1:L
    DA2_x(i,1)=(x2_r(i,1)-x2_mean).^2;
end
for i=1:L
    DA2_y(i,1)=(y2_r(i,1)-y2_mean).^2;
end
D_x2=sum(DA2_x)/L;
D_y2=sum(DA2_y)/L;
r2=ConvA2/(sqrt(D_x2*D_y2))
save('Konv_vertikal.mat','r','r2')

Horizontal Correlation Encrypted Image by DES

Horizontal Correlation Original Image

%diagonal
clear all
imrgb_o=double(imread('kodim23.png'));
imrgb_r=double(imread('Encrypt_DES_kodim23.png'));
imgray_o=sum(imrgb_o,3)/3; 
imgray_r=sum(imrgb_r,3)/3; 
[As Bs]=size(imgray_o);
x=imgray_o;
L=As*Bs;
x_p=[x(:,:) x(:,1)];
x_p2=[x_p(:,:) ; [x(1,:) x(1,1)] ];
for i=1:As
    for j=1:Bs
    y(i,j)=x_p2(i+1,j+1);
    end
end
x_r=reshape(x',1,L)';
y_r=reshape(y',1,L)';
figure1 = figure;
axes1 = axes('Parent',figure1)
hold(axes1,'all');
for i=1:L
    plot(x_r(i),y_r(i)), hold on
end
title('Diagonal Correlation Original Image')
saveas(figure1,'Diagonal Correlation Original Image.png') 
close (figure1)
x_mean=mean(x_r);
y_mean=mean(y_r);
for i=1:L
    A(i,1)=(x_r(i,1)-x_mean)*(y_r(i,1)-y_mean);
end
ConvA=sum(A)/L;
for i=1:L
    DA_x(i,1)=(x_r(i,1)-x_mean).^2;
end
for i=1:L
    DA_y(i,1)=(y_r(i,1)-y_mean).^2;
end
D_x=sum(DA_x)/L;
D_y=sum(DA_y)/L
r=ConvA/(sqrt(D_x*D_y))
%%%%%%%%%%%%%%%%%%%%%%%%%%%
x2=imgray_r;
x2_p=[x2(:,:) x2(:,1)]
x2_p2=[x2_p(:,:) ; [x2(1,:) x2(1,1)] ]
for i=1:As
    for j=1:Bs
    y2(i,j)=x2_p2(i+1,j+1);
    end
end
x2_r=reshape(x2',1,L)';
y2_r=reshape(y2',1,L)';
figure2 = figure;
axes2 = axes('Parent',figure2)
hold(axes2,'all');
for i=1:L
    plot(x2_r(i),y2_r(i)), hold on
end
title('Diagonal Correlation Encrypted Image by DES')
saveas(figure2,'Diagonal Correlation Encrypted Image by DES.png') 
close (figure2)
x2_mean=mean(x2_r);
y2_mean=mean(y2_r);
for i=1:L
    A2(i,1)=(x2_r(i,1)-x2_mean)*(y2_r(i,1)-y2_mean);
end
ConvA2=sum(A2)/L;
for i=1:L
    DA2_x(i,1)=(x2_r(i,1)-x2_mean).^2;
end
for i=1:L
    DA2_y(i,1)=(y2_r(i,1)-y2_mean).^2;
end
D_x2=sum(DA2_x)/L;
D_y2=sum(DA2_y)/L;
r2=ConvA2/(sqrt(D_x2*D_y2))
save('Konv_diagonal.mat','r','r2')

Diagonal Correlation Encrypted Image by DES

Diagonal Correlation Original Image

Flag Filter / Image Fusion


Pergantian profil image di facebook dengan menyertakan bendera atau yang sering dibilang “flag filter”. sekitar beberapa bulan yang lalu rainbow flag dan sekarang france flag.

bagaimana cara kerja “flag filter”?
“flag filter” dalam bahasa lainnya dikenal dengan image fusion, image fusion ini terdiri dari bermacam macam metode: Simple Average, Maximum Selected High pass filtering, IHS Transform, PCA, Wavelet, dll. Semakin aneh namanya semakin aneh cara kerjanya, lengkapnya bisa digoogle “image fusion”

Sekarang kita coba lihat metode yang paling simple yaitu Simple average. Dari namanya kita sudah bisa tahu bahwa cara kerja nya adalah dengan merata-ratakan.

Dalam Citra Digital setiap pixel di representasikan dengan nilai pixel, gampangnya jika kita punya Citra digital 16 pixel maka ada 16 nilai pixel atau 16×3 nilai pixel (jika citra direprentasikan dalam layer warna)

Contoh:
Citra Background = Ig (dalam hal ini adalah citra flag)
Citra Foreground = In (dalam hal ini adalah citra profil)
Citra Fused = fusedImg (dalam hal ini adalah citra yg sudah terfused)

bgImg=representasi nilai pixel Ig
fgImg=representasi nilai pixel In

jika kita anggap Ig dan In memiliki panjang dan lebar yang sama,
maka setiap nilai pixel yang terfused adalah IfusedImg = (bgImg+fgImg)/2.

Tetapi kita bisa memodifikasi tingkat ketebalan atau tingkat transparansi dari Ig atau In dengan formula sederhana sebagai berikut:
0<=alphaFactor<=1 (semakin tinggi nilai alphaFactor semakin transparan bgImgAlpha (Flag)

fgImgAlpha = alphaFactor .* fgImg;
bgImgAlpha = (1 – alphaFactor) .* bgImg;

berikut script yang dijalankan dimatlab dengan alphaFactor =0.4,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc, clear all, close all
Ig=imread(‘Indonesia_flagx.png’);
If=imread(‘n.png’);

bgImg = double(Ig);
fgImg = double(If);

alphaFactor = 0.4;

fgImgAlpha = alphaFactor .* fgImg;
bgImgAlpha = (1 – alphaFactor) .* bgImg;

fusedImgt = fgImgAlpha + bgImgAlpha;
fusedImg = uint8(fusedImgt);

figure;
subplot(131);imshow(Ig);title(‘BackGround’);
subplot(132);imshow(If);title(‘ForeGround’);
subplot(133);imshow(fusedImg);title(‘Fused’);

figure;imshow(fusedImg)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Screenshot from 2015-11-15 11:04:48

Membuat Hamming Code menggunakan Matlab


Setelah kita sebelum nya membahas tentang sedikit langkah-langkah dalam pembuatan code hamming, sekarang kita mencoba untuk menggunakan matlab untuk visualisasi

untuk membandingkan hitungan manual kita pada post sebelum nya dengan matlab kita dapat menggunakan script sebagai berikut

clc, clear all
m = 4; n = 2^m-1; % Codeword length = 15
k = 11; % Message length

msg1 = [1 1 0 0 0 0 1 0]; % As a column vector

code1 = encode(msg1,n,k,'hamming/binary')

maka hasil yang kita dapatkan melalui command window sebagai berikut
code1 = [0 1 0 0 1 1 0 0 0 0 1 0 0 0 0]

sedangkan pada perhitungan manual sebelum nya kita mendapat hasil encode sebagai berikut: [ 1 1 0 0 0 0 0 1 0 0 1 0]

pada dasarnya kedua kode tesebut ada sama,
namun pada matlab tidak memakai urutan [D8 D7 D6 D5 C8 D4 D3 D2 C4 D1 C2 C1]

namun pada matlab urutannya menjadi [C1 C2 C3 C4 D8 D7 D6 D5 D4 D3 D2 D1]

 

 

Perubahan Bit LSB MSB pada citra digital


Pada dasarya setiap citra digital 2D direpresentasikan kedalam bentuk nilai pixel pada setiap posisi 2 dimensi (x,y). Disetiap pixel nya itu dapat direpresentasikan derajat keabuabuannya dalam bentuk nilai 0-255 atau juga bisa kita representaikan dalam bentuk byte yang terdiri dari 8 bit (catatan: tentunya tergantung dari format yang digunakan, saat ini kita menggunakan bmp atau png)

b0,b1,b2,b3,b4,b5,b6,b6 ==> adalah susunan bit dengan b0 adalah adalah MSB Most significant bit atau high order bit dengan kata lain nilai terbesar dari susunan bit, sedangkan b6 adalah nilai terkecil dari susunan bit.

Misal citra digital grayscale mempunyai pixel 512×512 Pixel, kita hanya mengambil b0 atau b4 atau b6 nya saja apa yang akan terjadi?

melalui program script sederhana matlab dapat kita dapatkan hasil sebagai berikut
Screenshot from 2015-09-05 17:10:52
Program tanpa uint8 (unsigned integer 8)

Screenshot from 2015-09-05 17:12:37
Program dengan uint8 (unsigned integer 8)

dari gambar diatas dapat kita simpulkan bahwa perbuahan pada bit MSB akan membuat citra “rusak” dan sebaliknya pada perubahan bit pada LSB. Hal ini sering dimanfaatkan untuk enkripsi citra ataupun steganografi citra

Script matlab

clc, clear all, close all
Im=imread('Cameraman.bmp');
subplot(3,3,1), subimage(Im)
set(gca,'visible','off')
[M N]=size(Im);
Im_b=de2bi(Im,8,'left-msb');
[Mb Nb]=size(Im_b);
for j=1:Nb
    Im_bx=zeros(Mb,Nb);
    for i=1:Mb
        Im_bx(i,j)=Im_b(i,j);
    end
    Im_r=reshape((bi2de(Im_bx,'left-msb')),N,M);
    subplot(3,3,j+1), subimage(uint8(Im_r))
    set(gca,'visible','off')
end

Demodulasi BPSK via Simulink


Setelah di post sebelum nya kita membahas modulasi BPSK modulasi-bpsk-via-simulink modulasi-bpsk-via-simulink-modified sekarang kita mencoba membahas Demodulasi atau membuat demodulator BPSK dengan Simulink

Sebelum memasuki Receiver kita dapat mensimulasikan sinyal setelah modulator kedalam kanal AWGN. Berikut sketch simulink nya. parameter kanal AWGN bisa disesuaikan dengan keinginan, saat ini saya menggunakan parameter mode SNR 10 dB dan input signal 1 watt

Screenshot from 2015-06-04 21:19:43

setelah itu skets tersebut kita dapat sambungkan ke design demodulator sebagai berikut: settingan sin cos dapat disesuaikan dengan Transmiter yang kita buat sebelum nya

Screenshot from 2015-06-04 21:27:19

Screenshot from 2015-06-04 21:28:19

Setelah itu kita dapat membandingkan dengan menggunakan scope

– gambar pertama adalah bit yang dikirim

– gambar kedua adalah sinyal yang telah termodulasi

– gambar ketiga adalah sinyal setelah kanal AWGN

– Sinyal keempat adalah sinyal yang sudah terdemodulasi namun belum dikembalikan kedalam bentuk bit

Bagaimana sinyal yang telah termodulasi tersebut kita dapat kembalikan kedalam bentuk bit? jika kita perhatikan gambar pertama dan keempat memiliki kemiliki kemiripan, dimana bit satu direpresentasikan dalam domain + dan bit 0 kedalam domain -. oleh sebab itu sinyal discrete tersebut kita dalam konversikan dengan sederhana if >0 = 1 else 1. Pada simulink kita dapat merepresentasikan hal tersebut salah satunya dengan cara penggunaan blok sign. Teruskan skets sebagai berikut

Screenshot from 2015-06-04 21:35:55maka scope yang akan didapatkan akan seperti berikut

Screenshot from 2015-06-04 21:35:46

disinyal terakhir kita bisa lihat kita sudah mendapatkan bit – bit pada demudolator bpsk namun banyak sekali simpangan-simpangan yang tidak sesuai dengan bit asli, mengapa begitu?

 

modus mode matlab


Kasus:
Diketahui deret bilangan acak sebagai berikut:
114 105 115 115 115 100 104 111 32 98 117 115 116 97 109 105 105 105 105 111 111 104

Pertanyaan:
Bagaimana membuat program dalam matlab dimana kita mengelompokan bilangan tersebut dengan berdasarkan frequensi kemunculannya:

jawab:
Hasil nya akan sebagai berikut

114  1
105 5
115 4
100 1
104 2
111 3
32 1
98 1
117 1
116 1
97 1
109 1

beriktu scrip matlab nya

karakter_ascii=[114 105 115 115 115 100 104 111 32 98 117 115 116 97 109 105 105 105 105 111 111 104]
karakter_length=length(karakter_ascii)
for j=1:karakter_length
a=1;
for i=1:karakter_length-j
if karakter_ascii(1,j)==karakter_ascii(1,i+j)
a=a+1;
karakter_ascii(2,j)=a;
karakter_ascii(1,i+j)=0;
end
end
end

for p=1:length(karakter_ascii)
if karakter_ascii(2,p)== 0
karakter_ascii(2,p)=1;
end
end

for p=1:length(karakter_ascii)
if karakter_ascii(1,p)~= 0
karakter_ascii_new(1,p)=karakter_ascii(1,p);
karakter_ascii_new(2,p)=karakter_ascii(2,p);
end
end

matbaru=0;
for p=1:length(karakter_ascii)
if karakter_ascii(1,p)~= 0
matbaru=matbaru+1;
end
end
matbaru_tem=zeros(2,matbaru);
c=1;
for p=1:length(karakter_ascii_new)
if karakter_ascii_new(1,p)~= 0
matbaru_tem(:,c)=karakter_ascii_new(:,p);
c=c+1;
end

end
transpose(matbaru_tem)