MidtermEnd
This commit is contained in:
commit
817c15f33a
|
|
@ -0,0 +1,99 @@
|
||||||
|
pkg load signal;
|
||||||
|
|
||||||
|
signal = csvread('unknownsignal.csv');
|
||||||
|
#Create a window for the domain we want to study
|
||||||
|
domainStart = 100;
|
||||||
|
domainEnd = 400;
|
||||||
|
|
||||||
|
lengthDomain = domainEnd - domainStart +1;
|
||||||
|
#window the signal
|
||||||
|
signal_window = zeros(size(signal));
|
||||||
|
signal_window(domainStart:domainEnd) = signal(domainStart:domainEnd) .* blackman(lengthDomain)';
|
||||||
|
|
||||||
|
#Plot the two raw signals
|
||||||
|
figure;
|
||||||
|
subplot(1,2,1);
|
||||||
|
plot(signal);
|
||||||
|
title("Signal");
|
||||||
|
xlabel("samples");
|
||||||
|
ylabel("Amplitude");
|
||||||
|
|
||||||
|
subplot(1,2,2);
|
||||||
|
plot(signal_window);
|
||||||
|
title("Blackman signal windowing");
|
||||||
|
xlabel("samples");
|
||||||
|
ylabel("Gain");
|
||||||
|
|
||||||
|
#Apply FFT to both signals.
|
||||||
|
signalFFT = fft(signal);
|
||||||
|
signalFFTwindow = fft(signal_window);
|
||||||
|
fs=600;
|
||||||
|
F = (0:length(signal)-1)*(fs/length(signal));
|
||||||
|
|
||||||
|
figure;
|
||||||
|
subplot(1,2,1);
|
||||||
|
plot(F,signalFFT);
|
||||||
|
title("Signal FFT");
|
||||||
|
xlabel("Frequency");
|
||||||
|
ylabel("Gain");
|
||||||
|
|
||||||
|
subplot(1,2,2);
|
||||||
|
plot(F,signalFFTwindow);
|
||||||
|
title("Blackman signal FFT");
|
||||||
|
xlabel("Frequency");
|
||||||
|
ylabel("Gain");
|
||||||
|
|
||||||
|
|
||||||
|
order = 50;
|
||||||
|
fc = 100; % cutoff frequency
|
||||||
|
h_fir1 = fir1(order, fc/(fs/2));
|
||||||
|
|
||||||
|
n = 4;
|
||||||
|
Wn = fc/(fs/2);
|
||||||
|
[b, a] = butter(n, Wn);
|
||||||
|
|
||||||
|
|
||||||
|
% filter the signals
|
||||||
|
filtered_signal = filter(h_fir1, 1, signal);
|
||||||
|
filtered_windowed_signal = filter(h_fir1, 1, signal_window);
|
||||||
|
filtered_signal_butter = filter(b, a, signal);
|
||||||
|
filtered_windowed_signal_butter = filter(b, a, signal_window);
|
||||||
|
|
||||||
|
% plot the signals using subplots
|
||||||
|
t = linspace(0, length(signal)/fs, length(signal));
|
||||||
|
t_window = linspace(0, length(signal)/fs, length(signal));
|
||||||
|
|
||||||
|
subplot(2,2,1);
|
||||||
|
plot(t, signal);
|
||||||
|
title('Original Signal');
|
||||||
|
|
||||||
|
subplot(2,2,2);
|
||||||
|
plot(t_window, signal_window);
|
||||||
|
title('Windowed Signal');
|
||||||
|
|
||||||
|
subplot(2,2,3);
|
||||||
|
plot(t, filtered_signal);
|
||||||
|
title('FIR1 Filtered Signal');
|
||||||
|
|
||||||
|
subplot(2,2,4);
|
||||||
|
plot(t_window, filtered_windowed_signal);
|
||||||
|
title('FIR1 Filtered Windowed Signal');
|
||||||
|
|
||||||
|
figure;
|
||||||
|
|
||||||
|
subplot(2,2,1);
|
||||||
|
plot(t, signal);
|
||||||
|
title('Original Signal');
|
||||||
|
|
||||||
|
subplot(2,2,2);
|
||||||
|
plot(t_window, signal_window);
|
||||||
|
title('Windowed Signal');
|
||||||
|
|
||||||
|
subplot(2,2,3);
|
||||||
|
plot(t, filtered_signal_butter);
|
||||||
|
title('Butterworth Filtered Signal');
|
||||||
|
|
||||||
|
subplot(2,2,4);
|
||||||
|
plot(t_window, filtered_windowed_signal_butter);
|
||||||
|
title('Butterworth Filtered Windowed Signal');
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue