final code for css
This commit is contained in:
@@ -1,43 +0,0 @@
|
|||||||
clc;
|
|
||||||
close all;
|
|
||||||
clear all;
|
|
||||||
|
|
||||||
% semestralka
|
|
||||||
rawText = fileread('data6.dat');
|
|
||||||
nums = regexp(rawText, '[-+]?\d+', 'match');
|
|
||||||
data = int16(str2double(nums));
|
|
||||||
|
|
||||||
X = DFT_priama(double(data));
|
|
||||||
n = length(X);
|
|
||||||
Fs = 200;
|
|
||||||
freq = (0:n-1)*Fs/n;
|
|
||||||
|
|
||||||
figure;
|
|
||||||
plot(double(data));
|
|
||||||
figure;
|
|
||||||
plot(freq, X)
|
|
||||||
%3
|
|
||||||
figure;
|
|
||||||
magX = abs(X);
|
|
||||||
plot(freq, magX)
|
|
||||||
% freq shift pre -Fs/2 po Fs/2
|
|
||||||
freq_shift = (-n/2:n/2-1)*(Fs/n);
|
|
||||||
%4
|
|
||||||
figure;
|
|
||||||
subplot(2,1,1);
|
|
||||||
plot(freq_shift, real(fftshift(X)), 'b');
|
|
||||||
subplot(2,1,2);
|
|
||||||
plot(freq_shift, imag(fftshift(X)), 'r');
|
|
||||||
%5
|
|
||||||
figure;
|
|
||||||
plot(freq, imag(X), 'r');
|
|
||||||
%6
|
|
||||||
figure;
|
|
||||||
plot(freq, real(X), 'r');
|
|
||||||
figure;
|
|
||||||
plot(freq, angle(X))
|
|
||||||
|
|
||||||
[pks, locs] = findpeaks(magX, 'NPeaks', 10, 'SortStr', 'descend');
|
|
||||||
f0 = freq(locs)
|
|
||||||
f0b = f0(f0 < 100);
|
|
||||||
f0_ohranicene = f0b
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
clc;
|
|
||||||
close all;
|
|
||||||
clear all;
|
|
||||||
|
|
||||||
f0_ohranicene = [25, 20, 10, 12.5];
|
|
||||||
% semestralka
|
|
||||||
rawText = fileread('data6.dat');
|
|
||||||
nums = regexp(rawText, '[-+]?\d+', 'match');
|
|
||||||
data = int16(str2double(nums));
|
|
||||||
|
|
||||||
Fs = 200;
|
|
||||||
r = 0.95;
|
|
||||||
b = 1;
|
|
||||||
a = 1;
|
|
||||||
|
|
||||||
for k = 1:length(f0_ohranicene)
|
|
||||||
theta = 2*pi*(f0_ohranicene(k)/Fs);
|
|
||||||
b = conv(b, [1, -2*cos(theta), 1]);
|
|
||||||
a = conv(a, [1, -2*r*cos(theta), r^2]);
|
|
||||||
end
|
|
||||||
|
|
||||||
figure;
|
|
||||||
zplane(b, a);
|
|
||||||
figure;
|
|
||||||
freqz(b, a);
|
|
||||||
figure;
|
|
||||||
freqz(b, a);
|
|
||||||
filtered_data = filter(b, a, double(data));
|
|
||||||
plot(filtered_data);
|
|
||||||
61
semestralka/FIR.m
Normal file
61
semestralka/FIR.m
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
clc;
|
||||||
|
close all;
|
||||||
|
clear all;
|
||||||
|
|
||||||
|
f0_ohranicene = [25, 20, 10, 12.5];
|
||||||
|
% semestralka
|
||||||
|
rawText = fileread('data6.dat');
|
||||||
|
nums = regexp(rawText, '[-+]?\d+', 'match');
|
||||||
|
data = int16(str2double(nums));
|
||||||
|
|
||||||
|
Fs = 200;
|
||||||
|
N = 3000;
|
||||||
|
notch_hw = 0.08;
|
||||||
|
trans_bw = 0.08;
|
||||||
|
f0_sorted = sort(f0_ohranicene);
|
||||||
|
F = [];
|
||||||
|
A = [];
|
||||||
|
prev_end = 0;
|
||||||
|
|
||||||
|
for k = 1:length(f0_sorted)
|
||||||
|
f0 = f0_sorted(k);
|
||||||
|
notch_start = (f0 - notch_hw) / (Fs/2);
|
||||||
|
notch_end = (f0 + notch_hw) / (Fs/2);
|
||||||
|
trans_start = max(prev_end + 0.001, (f0 - notch_hw - trans_bw) / (Fs/2));
|
||||||
|
trans_end = (f0 + notch_hw + trans_bw) / (Fs/2);
|
||||||
|
if trans_start > prev_end + 0.001
|
||||||
|
F = [F, prev_end, trans_start];
|
||||||
|
A = [A, 1, 1];
|
||||||
|
end
|
||||||
|
F = [F, notch_start, notch_end];
|
||||||
|
A = [A, 0, 0];
|
||||||
|
prev_end = trans_end;
|
||||||
|
end
|
||||||
|
|
||||||
|
if prev_end < 1
|
||||||
|
F = [F, prev_end, 1];
|
||||||
|
A = [A, 1, 1];
|
||||||
|
end
|
||||||
|
|
||||||
|
F = max(0, min(1, F));
|
||||||
|
b = firls(N, F, A);
|
||||||
|
a = 1;
|
||||||
|
|
||||||
|
b = real(b);
|
||||||
|
figure;
|
||||||
|
zplane(b, a);
|
||||||
|
figure;
|
||||||
|
freqz(b, a);
|
||||||
|
set(gcf, 'Color', 'none');
|
||||||
|
set(gca, 'Color', 'none');
|
||||||
|
print('-depsc', 'fig1_semD.eps');
|
||||||
|
figure;
|
||||||
|
freqz(b, a);
|
||||||
|
filtered_data = filtfilt(b, a, double(data));
|
||||||
|
title('Filtrovaný signál');
|
||||||
|
xlabel('Vzorky');
|
||||||
|
ylabel('Amplitúda');
|
||||||
|
set(gcf, 'Color', 'none');
|
||||||
|
set(gca, 'Color', 'none');
|
||||||
|
plot(filtered_data);
|
||||||
|
print('-depsc', 'fig2_semD.eps');
|
||||||
56
semestralka/IIR_SOS.m
Normal file
56
semestralka/IIR_SOS.m
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
clc;
|
||||||
|
close all;
|
||||||
|
clear all;
|
||||||
|
|
||||||
|
f0_ohranicene = [25, 20, 10, 12.5];
|
||||||
|
rawText = fileread('data6.dat');
|
||||||
|
nums = regexp(rawText, '[-+]?\d+', 'match');
|
||||||
|
data = int16(str2double(nums));
|
||||||
|
|
||||||
|
Fs = 200;
|
||||||
|
r = 0.98;
|
||||||
|
|
||||||
|
% predalokovana SOS matica pre vsetky filtrovane zlozky
|
||||||
|
% 6 lebo koeficienty [b0, b1, b2, a0, a1, a2]
|
||||||
|
sos = zeros(length(f0_ohranicene), 6);
|
||||||
|
|
||||||
|
for k = 1:length(f0_ohranicene)
|
||||||
|
theta = 2 * pi * (f0_ohranicene(k) / Fs);
|
||||||
|
b = [1, -2*cos(theta), 1];
|
||||||
|
a = [1, -2*r*cos(theta), r^2];
|
||||||
|
sos(k, :) = [b, a]
|
||||||
|
end
|
||||||
|
|
||||||
|
figure;
|
||||||
|
[z, p, k_gain] = sos2zp(sos);
|
||||||
|
|
||||||
|
figure;
|
||||||
|
zplane(z, p);
|
||||||
|
title('Nuly a póly filtra');
|
||||||
|
xlabel('Reálna časť');
|
||||||
|
ylabel('Imaginárna časť');
|
||||||
|
set(gcf, 'Color', 'none');
|
||||||
|
set(gca, 'Color', 'none');
|
||||||
|
print('-depsc', 'fig2_semE.eps');
|
||||||
|
|
||||||
|
figure;
|
||||||
|
freqz(sos, 4096, Fs);
|
||||||
|
title('Frekvenčná charakteristika SOS filtra');
|
||||||
|
xlabel('Frekvencia [Hz]');
|
||||||
|
ylabel('Zosilnenie [dB]');
|
||||||
|
set(gcf, 'Color', 'none');
|
||||||
|
set(gca, 'Color', 'none');
|
||||||
|
print('-depsc', 'fig3_semE.eps');
|
||||||
|
|
||||||
|
filtered_data = sosfilt(sos, double(data));
|
||||||
|
figure;
|
||||||
|
plot(filtered_data);
|
||||||
|
title('Filtrovaný signál');
|
||||||
|
xlabel('Vzorky');
|
||||||
|
ylabel('Amplitúda');
|
||||||
|
grid on;
|
||||||
|
set(gcf, 'Color', 'none');
|
||||||
|
set(gca, 'Color', 'none');
|
||||||
|
set(gcf, 'PaperPosition', [0 0 1.7*6 0.75*4.2]);
|
||||||
|
set(gcf, 'PaperSize', [1.7*6 0.75*4.2]);
|
||||||
|
print('-depsc', 'fig4_semE.eps');
|
||||||
102
semestralka/full_IIR.m
Normal file
102
semestralka/full_IIR.m
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
clc;
|
||||||
|
close all;
|
||||||
|
clear all;
|
||||||
|
|
||||||
|
% semestralka
|
||||||
|
rawText = fileread('data6.dat');
|
||||||
|
nums = regexp(rawText, '[-+]?\d+', 'match');
|
||||||
|
data = int16(str2double(nums));
|
||||||
|
|
||||||
|
X = DFT_priama(double(data));
|
||||||
|
n = length(X);
|
||||||
|
Fs = 200;
|
||||||
|
freq = (0:n-1)*Fs/n;
|
||||||
|
|
||||||
|
figure;
|
||||||
|
plot(double(data));
|
||||||
|
figure;
|
||||||
|
plot(freq, X)
|
||||||
|
%3
|
||||||
|
figure;
|
||||||
|
magX = abs(X);
|
||||||
|
plot(freq, magX)
|
||||||
|
%4
|
||||||
|
% freq shift pre -Fs/2 po Fs/2
|
||||||
|
freq_shift = (-n/2:n/2-1)*(Fs/n);
|
||||||
|
figure;
|
||||||
|
subplot(2,1,1);
|
||||||
|
plot(freq_shift, real(fftshift(X)));
|
||||||
|
title('Reálna časť posunutého spektra');
|
||||||
|
xlabel('Frekvencia [Hz]');
|
||||||
|
ylabel('Reálna hodnota');
|
||||||
|
subplot(2,1,2);
|
||||||
|
plot(freq_shift, imag(fftshift(X)), 'r');
|
||||||
|
title('Imaginárna časť posunutého spektra');
|
||||||
|
xlabel('Frekvencia [Hz]');
|
||||||
|
ylabel('Imaginárna hodnota');
|
||||||
|
set(gcf, 'PaperPosition', [0 0 1.7*6 0.75*4.2]);
|
||||||
|
set(gcf, 'PaperSize', [1.7*6 0.75*4.2]);
|
||||||
|
set(gcf, 'Color', 'none'); set(gca, 'Color', 'none');
|
||||||
|
print('-depsc', 'fig_im_real_semC.eps');
|
||||||
|
%5
|
||||||
|
figure;
|
||||||
|
plot(freq, imag(X), 'r');
|
||||||
|
%6
|
||||||
|
figure;
|
||||||
|
plot(freq, real(X));
|
||||||
|
%7
|
||||||
|
figure;
|
||||||
|
% fazove spektrum
|
||||||
|
plot(freq, angle(X))
|
||||||
|
|
||||||
|
[pks, locs] = findpeaks(magX, 'NPeaks', 10, 'SortStr', 'descend');
|
||||||
|
f0 = freq(locs)
|
||||||
|
f0b = f0(f0 < 100); % nyquistov teorem
|
||||||
|
f0_ohranicene = f0b
|
||||||
|
|
||||||
|
f0_ohranicene(f0_ohranicene < 2) = [];
|
||||||
|
r = 0.975;
|
||||||
|
b = 1;
|
||||||
|
a = 1;
|
||||||
|
|
||||||
|
for k = 1:length(f0_ohranicene)
|
||||||
|
theta = 2*pi*(f0_ohranicene(k)/Fs);
|
||||||
|
b = conv(b, [1, -2*cos(theta), 1]);
|
||||||
|
a = conv(a, [1, -2*r*cos(theta), r^2]);
|
||||||
|
end
|
||||||
|
|
||||||
|
figure;
|
||||||
|
zplane(b, a);
|
||||||
|
title('Nuly a póly filtra');
|
||||||
|
xlabel('Reálna časť');
|
||||||
|
ylabel('Imaginárna časť');
|
||||||
|
set(gcf, 'Color', 'none'); set(gca, 'Color', 'none');
|
||||||
|
print('-depsc', 'fig1_semC.eps');
|
||||||
|
|
||||||
|
figure;
|
||||||
|
freqz(b, a);
|
||||||
|
title('Frekvenčná charakteristika (1)');
|
||||||
|
xlabel('Frekvencia [Hz]');
|
||||||
|
ylabel('Zosilnenie [dB]');
|
||||||
|
set(gcf, 'Color', 'none'); set(gca, 'Color', 'none');
|
||||||
|
print('-depsc', 'fig2_semC.eps');
|
||||||
|
|
||||||
|
figure;
|
||||||
|
freqz(b, a);
|
||||||
|
title('Frekvenčná charakteristika (2)');
|
||||||
|
xlabel('Frekvencia [Hz]');
|
||||||
|
ylabel('Zosilnenie [dB]');
|
||||||
|
set(gcf, 'Color', 'none'); set(gca, 'Color', 'none');
|
||||||
|
print('-depsc', 'fig3_semC.eps');
|
||||||
|
|
||||||
|
filtered_data = filter(b, a, double(data));
|
||||||
|
figure;
|
||||||
|
plot(filtered_data);
|
||||||
|
title('Filtrovaný signál');
|
||||||
|
xlabel('Vzorky');
|
||||||
|
ylabel('Amplitúda');
|
||||||
|
grid on;
|
||||||
|
set(gcf, 'Color', 'none'); set(gca, 'Color', 'none');
|
||||||
|
set(gcf, 'PaperPosition', [0 0 1.7*6 0.75*4.2]);
|
||||||
|
set(gcf, 'PaperSize', [1.7*6 0.75*4.2]);
|
||||||
|
print('-depsc', 'fig4_semC.eps');
|
||||||
Reference in New Issue
Block a user