You are on page 1of 18

1 HASIL PLOT SINYAL INPUT UNTUK FILTER

2 HASIL PLOT SINYAL UNTUK FIR LPF

3 HASIL PLOT SINYAL FIR BPF


4 HASIL PLOT SINYAL FIR HPF

5 HASIL PLOT FIR REAL TIME


6 HASIL PLOT FIR REAL TIME DENGAN BUFFER SIRKULAR

7 HASIL PLOT FIR REAL TIME DENGAN BILANGAN FRAKSIONAL

8 HASIL PLOT SINYAL AUDIO


9 HASIL PLOT LPF

10 HASIL PLOT BPF

11 HASIL PLOT HPF

12 HASIL PLOT SINYAL LPF/BPF/HPF


SCRIPT PERCOBAAN 1 MODUL 1

%percobaan 1
i=1:1000;
fs=16000;
f1=200;
f2=1000;
f3=5000;
pi=3.14;

sin1=sin(2*pi*i*f1/fs);
sin2=sin(2*pi*i*f2/fs);
sin3=sin(2*pi*i*f3/fs);
sintot=(sin1+sin2+sin3)/3;
plot(sintot);
freqz(sintot);

SCRIPT PERCOBAAN 2 MODUL 1

%percobaan2
%rumus
%b = firl (n ,Wn)
%Wn = fs/fc*0.5

n=32;
Wnlow=800/(16000*0.5);
Wnbandlow=1000/(16000*0.5);
Wnbandhigh=3000/(16000*0.5);
Wn=6000/(16000*0.5);

lowpass = fir1(n,Wnlow);%(32,0.1)
bandpass = fir1(n,[Wnbandlow, Wnbandhigh]); %(32,[0.123, 0.375], 'bandpass')
highpass = fir1(n, Wn);%(32,0.75)

freqz(bandpass);

SCRIPT PERCOBAAN 3 MODUL 1


%percobaan3
F=[0 0.1 0.15 1];
A=[1 1 0 0];
perc3=fir2(16,F,A);
freqz(perc3);
SCRIPT PERCOBAAN 1 MODUL 2
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace std;


// panjang tap filter
#define BUFFERLENGTH 9
#define LENGTH 100

#define PI 3.14159265
float koef_filter[BUFFERLENGTH] = {0.020041, 0.064976, 0.167492,
0.250847, 0.250847, 0.167492, 0.064976, 0.020041};
float buffer[BUFFERLENGTH];
float x[LENGTH];
float y[LENGTH];

int i, j;

float filter(float input) {


float hasil;
//buffering
for(j = BUFFERLENGTH - 1; j > 0; j--) {
buffer[j] = buffer[j-1];
}
//input disimpan di buffer 0
buffer[0] = input;
// perhitungan filter
hasil = 0;
for(j = 0; j < BUFFERLENGTH; j++) {
hasil = hasil + buffer[j] * koef_filter[j];
}
// kembalikan hasil pemfilteran
return hasil;
}
int main(int argc, char *argv[])
{
FILE *pFile;
//siapkan input
for(i=0; i < LENGTH; i++) {
x[i] =
(sin(2*PI*200/16000*i)+sin(2*PI*1000/16000*i)+sin(2*PI*5000/16000*i)) / 3;
}
//inisialisasi buffer dengan nol
for(i=0; i < BUFFERLENGTH; i++) {
buffer[i] = 0;
}

//loop mengambil input tiap sampel dan menaruhnya pada output


for(i=0; i < LENGTH; i++) {
y[i] = filter(x[i]);
}

//tulis output ke file


pFile = fopen("output.txt", "w");
for(i=0; i < LENGTH; i++) {
fprintf(pFile,"%4.4f\n", y[i]);
}
fclose(pFile);
system("PAUSE");
return EXIT_SUCCESS;
}

SCRIPT PERCOBAAN 2 MODUL 2


#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace std;


// panjang tap filter
#define BUFFERLENGTH 9
#define LENGTH 100
#define PI 3.14159265
float koef_filter[BUFFERLENGTH] = {0.020041, 0.064976, 0.167492,
0.250847, 0.250847, 0.167492, 0.064976, 0.020041};
float buffer[BUFFERLENGTH];
float x[LENGTH];
float y[LENGTH];

int i, j, k;

float filter(float input) {


float hasil;
//buffering
for(j = BUFFERLENGTH - 1; j > 0; j--) {
buffer[j] = buffer[j-1];
}
//input disimpan di buffer 0
buffer[0] = input;
// perhitungan filter
hasil = 0;
for(j = 0; j < BUFFERLENGTH; j++) {
hasil = hasil + buffer[j+k] * koef_filter[j];
}
// kembalikan hasil pemfilteran
return hasil;
}
int main(int argc, char *argv[])
{
FILE *pFile;
//siapkan input
for(i=0; i < LENGTH; i++) {
x[i] =
(sin(2*PI*200/16000*i)+sin(2*PI*1000/16000*i)+sin(2*PI*5000/16000*i)) / 3;
}
//inisialisasi buffer dengan nol
for(i=0; i < BUFFERLENGTH; i++) {
buffer[i] = 0;
}
//loop mengambil input tiap sampel dan menaruhnya pada output
for(i=0; i < LENGTH; i++) {
y[i] = filter(x[i]);
}

//tulis output ke file


pFile = fopen("output.txt", "w");
for(i=0; i < LENGTH; i++) {
fprintf(pFile,"%4.4f\n", y[i]);
}
fclose(pFile);
system("PAUSE");
return EXIT_SUCCESS;
}

SCRIPT PERCOBAAN 3 MODUL 2


#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace std;


// panjang tap filter
#define BUFFERLENGTH 9
#define LENGTH 100

#define PI 3.14159265
float koef_filter[BUFFERLENGTH] = {0.020041, 0.064976, 0.167492,
0.250847, 0.250847, 0.167492, 0.064976, 0.020041};
float buffer[BUFFERLENGTH];
float x[LENGTH];
float y[LENGTH];

int i, j;
int k;
float filter(float input) {
float hasil;
//buffering
for(j = BUFFERLENGTH - 1; j > 0; j--) {
buffer[j] = buffer[j-1];
}
//input disimpan di buffer 0
buffer[0] = input;
// perhitungan filter
hasil = 0;
for(j = 0; j < BUFFERLENGTH; j++) {
hasil = hasil + buffer[j+k] *
round(koef_filter[j]*pow(2,32));
}
// kembalikan hasil pemfilteran
return hasil;
}
int main(int argc, char *argv[])
{
FILE *pFile;
//siapkan input
for(i=0; i < LENGTH; i++) {
x[i] =
(sin(2*PI*200/16000*i)+sin(2*PI*1000/16000*i)+sin(2*PI*5000/16000*i)) / 3;
}
//inisialisasi buffer dengan nol
for(i=0; i < BUFFERLENGTH; i++) {
buffer[i] = 0;
}

//loop mengambil input tiap sampel dan menaruhnya pada output


for(i=0; i < LENGTH; i++) {
y[i] = filter(x[i]);
}

//tulis output ke file


pFile = fopen("output.txt", "w");
for(i=0; i < LENGTH; i++) {
fprintf(pFile,"%4.4f\n", y[i]);
}
fclose(pFile);
system("PAUSE");
return EXIT_SUCCESS;
}

SCRIPT PERCOBAAN 1 MODUL 3


[y,Fs] = audioread ('out33.wav');
y_left = y(:,1)';
y_right= y(:,1)';

i = 1:length(y);
figure;
subplot(2,1,1); plot(i/Fs,y_left); xlabel('Time (s)');
ylabel('Amplitude'); ylim([-1 1]); title('Left');
subplot(2,1,2); plot(i/Fs,y_right); xlabel('Time (s)');
ylabel('Amplitude'); ylim([-1 1]); title('Right');
[h,w] = freqz((y_left+y_right)/2);
figure;
plot(w/(2*pi)*Fs/1000,20*log10(abs(h)));
xlabel('Frequency (kHz)');
ylabel('Magnitude (dB)');
title('Audio Magnitude Spectrum');
y_out = [y_left',y_right'];

SCRIPT PERCOBAAN 1 MODUL 4


#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
// panjang tap filter
#define BUFFERLENGTH 32
#define LENGTH 1000000
// koefisien filter (dari MATLAB)
int koef_filter[BUFFERLENGTH] = {6166236, 7485811, 10575826, 15660600,
22832490, 32035700, 43060842, 55551059, 69019575, 82877637, 96470957,
109122047, 120175350,
129041785, 135239335, 138426573, 138426573, 135239335, 129041785,
120175350, 109122047, 96470957, 82877637, 69019575, 55551059, 43060842,
32035700, 22832490,
15660600, 10575826, 7485811, 6166236
};
int buffer[BUFFERLENGTH];
int x[LENGTH];
int y[LENGTH];
int i = 0;
int j = 0;
int k = 0;
int filter(int input) {
int hasil;

// Buffering input
buffer[k] = input;

// perhitungan filter
hasil = 0;
for (j = 0; j < BUFFERLENGTH; j++) {
hasil += (koef_filter[j] >> 16) * (buffer[(k +
j) % BUFFERLENGTH] >> 15);
}
// Decreasing i (circular)
k=(k+BUFFERLENGTH-1)%BUFFERLENGTH;

// kembalikan hasil pemfilteran


return hasil;
}
int main(int argc, char *argv[]) {
FILE *pFile;
FILE *pFileInput;
float temp;
int sampleLength;

//siapkan input
//ganti file name sesuai nama file input
pFileInput = fopen("white_noise.txt","r");

// Baca input, ubah ke fraksional


i = 0;
while (!feof(pFileInput)) {
fscanf(pFileInput,"%f",&temp);
x[i] = round(temp*pow(2,31));
i++;
}
sampleLength = i;
fclose(pFileInput);

//inisialisasi buffer dengan nol


for(i=0; i < BUFFERLENGTH; i++) {
buffer[i] = 0;
}
//loop mengambil input tiap sampel dan menaruhnya pada output
for(i=0; i < sampleLength; i++) {
y[i] = filter(x[i]);
}

//tulis output ke file


//ganti file name sesuai nama file output
pFile = fopen("out1.txt", "w");
for(i=0; i < sampleLength; i++) {
fprintf(pFile,"%f\n", y[i]/pow(2,31));
}
fclose(pFile);
system("PAUSE");
return EXIT_SUCCESS;
}

SCRIPT PERCOBAAN 2 MODUL 4


#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
// panjang tap filter
#define BUFFERLENGTH 32
#define LENGTH 1000000
// koefisien filter (dari MATLAB)
int koef_filter[BUFFERLENGTH] = {6166236, 7485811, 10575826, 15660600,
22832490, 32035700, 43060842, 55551059, 69019575, 82877637, 96470957,
109122047, 120175350,
129041785, 135239335, 138426573, 138426573, 135239335, 129041785,
120175350, 109122047, 96470957, 82877637, 69019575, 55551059, 43060842,
32035700, 22832490,
15660600, 10575826, 7485811, 6166236
};
int buffer[BUFFERLENGTH];
int x[LENGTH];
int y[LENGTH];
int i = 0;
int j = 0;
int k = 0;
int filter(int input) {
int hasil;

// Buffering input
buffer[k] = input;

// perhitungan filter
hasil = 0;
for (j = 0; j < BUFFERLENGTH; j++) {
hasil += (koef_filter[j] >> 16) * (buffer[(k +
j) % BUFFERLENGTH] >> 15);
}
// Decreasing i (circular)
k=(k+BUFFERLENGTH-1)%BUFFERLENGTH;

// kembalikan hasil pemfilteran


return hasil;
}
int main(int argc, char *argv[]) {
FILE *pFile;
FILE *pFileInput;
float temp;
int sampleLength;

//siapkan input
//ganti file name sesuai nama file input
pFileInput = fopen("white_noise.txt","r");

// Baca input, ubah ke fraksional


i = 0;
while (!feof(pFileInput)) {
fscanf(pFileInput,"%f",&temp);
x[i] = round(temp*pow(2,31));
i++;
}
sampleLength = i;
fclose(pFileInput);

//inisialisasi buffer dengan nol


for(i=0; i < BUFFERLENGTH; i++) {
buffer[i] = 0;
}
//loop mengambil input tiap sampel dan menaruhnya pada output
for(i=0; i < sampleLength; i++) {
y[i] = filter(x[i]);
}

//tulis output ke file


//ganti file name sesuai nama file output
pFile = fopen("out1.txt", "w");
for(i=0; i < sampleLength; i++) {
fprintf(pFile,"%f\n", y[i]/pow(2,31));
}
fclose(pFile);
system("PAUSE");
return EXIT_SUCCESS;
}
SCRIPT PERCOBAAN 3 MODUL 4
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
// panjang tap filter
#define BUFFERLENGTH 33
#define LENGTH 1000000
// koefisien filter (dari MATLAB)
int koef_filter[BUFFERLENGTH] = {-3068479, -1028639, 3168780, 8239581,
9070203, -378358, -19147697, -33816245, -24380107, 18156604, 74719460,
98656859, 40623231,
-114859060, -327186526, -512033688, 1565760027, -512033688, -
327186526, -114859060, 40623231, 98656859, 74719460, 18156604, -24380107,
-33816245, -19147697,
-378358, 9070203, 8239581, 3168780, -1028639, -3068479
};
int buffer[BUFFERLENGTH];
int x[LENGTH];
int y[LENGTH];
int i = 0;
int j = 0;
int k = 0;
int filter(int input) {
int hasil;

// Buffering input
buffer[k] = input;

// perhitungan filter
hasil = 0;
for (j = 0; j < BUFFERLENGTH; j++) {
hasil += (koef_filter[j] >> 16) * (buffer[(k +
j) % BUFFERLENGTH] >> 15);
}
// Decreasing i (circular)
k=(k+BUFFERLENGTH-1)%BUFFERLENGTH;

// kembalikan hasil pemfilteran


return hasil;
}
int main(int argc, char *argv[]) {
FILE *pFile;
FILE *pFileInput;
float temp;
int sampleLength;

//siapkan input
//ganti file name sesuai nama file input
pFileInput = fopen("white_noise.txt","r");

// Baca input, ubah ke fraksional


i = 0;
while (!feof(pFileInput)) {
fscanf(pFileInput,"%f",&temp);
x[i] = round(temp*pow(2,31));
i++;
}
sampleLength = i;
fclose(pFileInput);

//inisialisasi buffer dengan nol


for(i=0; i < BUFFERLENGTH; i++) {
buffer[i] = 0;
}
//loop mengambil input tiap sampel dan menaruhnya pada output
for(i=0; i < sampleLength; i++) {
y[i] = filter(x[i]);
}

//tulis output ke file


//ganti file name sesuai nama file output
pFile = fopen("out3.txt", "w");
for(i=0; i < sampleLength; i++) {
fprintf(pFile,"%f\n", y[i]/pow(2,31));
}
fclose(pFile);
system("PAUSE");
return EXIT_SUCCESS;
}

You might also like