Anda di halaman 1dari 6

Tugas Analisis Sinyal Medis

Chapter 2 buku Biosignal and Image Processing


(2.28) Gunakan MATLAB dan korelasi silang untuk menemukan pergeseran fasa antara
sinusoid (f) 10-Hz yang ditemukan sebagai variabel x dan y dalam file sines1.mat. Asumsikan
frekuensi sampel (Fs) 2 kHz. Plot fungsi korelasi silang dan temukan kelambatan di mana
korelasi maksimum (atau minimum) terjadi. [Petunjuk: Tentukan shift waktu menggunakan
pendekatan dalam Contoh 2.9. Untuk mengubah pergeseran waktu itu menjadi pergeseran fase,
perhatikan itu periode x [n] adalah 1/10 detik dan fase dalam deg adalah rasio waktu tunda
terhadap periode, kali 360.]
Diketahui:z
f= 10Hz
fs=2kHz (2000Hz) atau 1/0.0005
T=1/10 Second
Pi=180
Ditanya: pergeseran fasa dan plot fungsi korelasi silang
Jawab:
Berikut ini adalah kode program MATLAB untuk mencari pergeseran fasa:
>> load sines1.mat;
fs = 1/0.0005; %Frekuensi Sampel dalam satuan Hz

t = (1:2000)/fs; %Time vector

f = 10; % Hz %Frekuensi sinusoida

phaseShift = pi/3; %Rumus pergeseran fasa

x = sin(2*pi*f*t); %Sinus dengan 1 frekuensi

y = cos(2*pi*f*t+phaseShift); % Cosinus dengan 1 frekuensi

plot(t,x) %Plot gambar t terhadap x

hold on
plot(t,y,'r') %Plot gambar t terhadap y

figure

c = xcorr(x,y); %Mencari korelasi silang

plot([-numel(x)+1:numel(x)-1],c)
[~,MaxIndex] = max(c);
phaseShift = 2*pi*f*(MaxIndex - numel(x) + 1)/fs; % phase shift in radian
disp(['PhaseShift in Degreephase = ',num2str(phaseShift*180/pi)]); % phaseShift in degree.

% x2 = circshift(x,[1,round(MaxIndex/2)]);
% y2 = circshift(y,[1,-round(MaxIndex/2)]);

lagNumber = max(numel(x),numel(y))-1;
[XCF,lags,~] = crosscorr(x,y,lagNumber);
[~,XCFMaxIndex] = max(abs(XCF));

if lags(XCFMaxIndex) < 1
phaseShift = 360*f*lags(XCFMaxIndex - 1)/fs
else
phaseShift = 360*f*lags(XCFMaxIndex + 1)/fs
end
PhaseShift in Degreephase = 151.2

phaseShift =

32.4000
 Didapatkan pergeseran fasa 32.4000
 Plot:
(2.29) File two_var.mat berisi dua variabel x dan y. Apakah salah satu dari variabel ini acak?
Apakah mereka ortogonal satu sama lain? (Gunakan metode yang valid untuk menentukan
ortogonal.)
Diketahui:
N=1000 point
Tt=0.01 Second
Ts=Tt/N = 0.01/1000
Ts=0.00001
Ditanya: apakah variabel x dan y orthogonal?
Jawab:
Berikut ini adalah kode program MATLAB untuk mengetahui apakah variabel x dan y
orthogonal atau tidak:
Ts = 0.00001; % Periode Interval Sampel

N = 1000; % Jumlah point

t = (0:N-1)*Ts; % Vektor Waktu

f1 = 2; % Frekuensi gelombang sinus 1

f2 = 4; % Frekuensi gelombang sinus 2

x = sin(2*pi*f1*t); % Gelombang sinus 1

y = sin(2*pi*f2*t); % Gelombang sinus 2

Corr = sum(x.*y); % Mencari korelasi

disp(Corr)
10.4292

 Karena nilai melebihi 0, maka tidak ortoghonal.


(2.30) Gunakan autokorelasi dan nomor acak radn untuk membuat plot urutan autokorelasi
Gaussian’s white noise. Gunakan array 2048 dan 256 poin untuk menampilkan efek panjang
data pada operasi ini. Ulangi untuk kedua panjang kebisingan yang seragam menggunakan
rand MATLAB. Perhatikan perbedaan antara Gaussian’s dan uniform noise.
Diketahui:
Array=2048
Array=256
Ditanya: plot Gaussian’s white noise
Jawab:
 Berikut ini adalah kode program MATLAB untuk array 2048:
%Rand and randn functions.
%Array 2048
N = 1000; % Jumlah poin data

nu_bins = 2048; % Jumlah array

y = randn(1,N); %Generate random Gaussian noise


[ht,xout] = hist(y,nu_bins); % Mengkalkulasi histogram

ht = ht/max(ht); %Normalize histogram to 1.0


bar(xout, ht); % Plot dalam bentuk grafik bar
....... Label axes and title .......
.......Repeat for rand ........

 Berikut ini adalah kode program MATLAB untuk array 2048:


% Rand and randn functions.
% Array 256
N = 1000; % Jumlah poin data
nu_bins = 256; % Jumlah Array
y = randn(1,N); % Generate random Gaussian noise
[ht,xout] = hist(y,nu_bins); % Mengkalkulasi histogram
ht = ht/max(ht); % Normalize histogram to 1.0
bar(xout, ht); % Plot dalam bentuk grafik bar
....... Label axes and title .......
.......Repeat for rand ........

Anda mungkin juga menyukai