File: Butterworth.m

package info (click to toggle)
labplot 2.12.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 78,528 kB
  • sloc: cpp: 241,047; ansic: 6,324; python: 915; xml: 400; yacc: 237; sh: 221; awk: 35; makefile: 11
file content (26 lines) | stat: -rw-r--r-- 856 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
% This script is intended to create the reference values for the filter tests

clc; clear; close all;
# pkg install "https://downloads.sourceforge.net/project/octave/Octave%20Forge%20Packages/Individual%20Package%20Releases/control-3.4.0.tar.gz"
# pkg install "https://downloads.sourceforge.net/project/octave/Octave%20Forge%20Packages/Individual%20Package%20Releases/signal-1.4.3.tar.gz"

pkg load signal

fs = 10000; % [Hz] Sample frequency
fc = 100; % [Hz] cut off frequency
fsignal = 100; % [Hz] Signal frequency
x = 0 : 1/fs : 1/fsignal * 10; % 10 periods
y = sin(x * 2*pi * fsignal);

[b, a] = butter(1,fc/(fs/2), "low");
filtered_data = filter(b,a,y);
csvwrite("butterworth.csv", [x; y; filtered_data]);

% plotting
freqz(b,a,[],fs)

figure();
hold on;
plot(x, y,'DisplayName','original');
plot(x, filtered_data,'DisplayName','filtered');
legend();