-
Notifications
You must be signed in to change notification settings - Fork 14
/
FIR_Filter_data.m
47 lines (38 loc) · 1.19 KB
/
FIR_Filter_data.m
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
% Generate a sine wave
close all; clear all;
fs = 5;
Amp = 1;
t = 0:1/fs:2*pi; % time vector
sine_wave = Amp*sin(t);
figure();
plot(t, sine_wave);
xlabel('\bf Time');
ylabel('\bf Amplitude');
title('\bf Sine wave');
% Add a noise
a = 0.3; % upper limit
b = 0; % lower limit
noise = (b-a).*rand(length(sine_wave),1) + a; noise = noise';
sine_noise = (sine_wave + noise);
sine_norm = sine_noise / max(abs(sine_noise));
figure();plot(1:length(sine_norm), sine_norm);
xlabel('\bf Time');
ylabel('\bf Amplitude');
title('\bf Sine wave + Noise');
% Impulse
impulse = [zeros(1,15), 1, zeros(1,16)];
stem(impulse)
% Convert from real to integers
total_wordlength = 16;
scaling = 7;
sine_noise_integers = round(sine_norm.*(2^scaling));
figure();plot(1:length(sine_noise_integers), sine_noise_integers);
xlabel('\bf Time');
ylabel('\bf Amplitude');
title('\bf Sine wave + Noise : Scaled Signal');
% Convert from integers to binary
sine_noise_in_binary_signed = dec2bin(mod((impulse),2^total_wordlength),total_wordlength);
yy = cellstr(sine_noise_in_binary_signed);
fid = fopen('impulse.data', 'wt');
fprintf(fid, '%8s \n', yy{:});
disp('text file for signal finished');