- added
git-svn-id: http://moon:8086/svn/matlab/trunk@128 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
function [B,A] = boost(fs, fc, bw, gain, P);
|
||||
%BOOST - Design a boost filter at given gain, center
|
||||
% frequency fc, bandwidth bw, and sampling rate fs
|
||||
% (default = 1).
|
||||
%
|
||||
% J.O. Smith 11/28/02
|
||||
% Reference: Zolzer: Digital Audio Signal Processing, p. 124
|
||||
|
||||
Q = fs/bw;
|
||||
wcT = 2*pi*fc/fs;
|
||||
|
||||
K=tan(wcT/2);
|
||||
V=gain;
|
||||
|
||||
b0 = 1 + V*K/Q + K^2;
|
||||
b1 = 2*(K^2 - 1);
|
||||
b2 = 1 - V*K/Q + K^2;
|
||||
a0 = 1 + K/Q + K^2;
|
||||
a1 = 2*(K^2 - 1);
|
||||
a2 = 1 - K/Q + K^2;
|
||||
A(1,:) = [a0 a1 a2] /a0;
|
||||
B(1,:) = [b0 b1 b2] /a0;
|
||||
|
||||
if nargout==0
|
||||
freqz(B(1,:),A(1,:));
|
||||
title('Boost Frequency Response')
|
||||
end
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
function [B,A] = boost2(fs, fc, bw, gain);
|
||||
%BOOST - Design a boost filter at given gain, center
|
||||
% frequency fc, bandwidth bw, and sampling rate fs
|
||||
% (default = 1).
|
||||
%
|
||||
% Cookbook formulae for audio EQ biquad filter coefficients
|
||||
% by Robert Bristow-Johnson <rbj@audioimagination.com>
|
||||
|
||||
Q = fs/bw;
|
||||
w0 = 2*pi*fc/fs;
|
||||
|
||||
A=sqrt(gain);
|
||||
alpha = sin(w0)/(2*Q)
|
||||
|
||||
b0 = 1 + alpha*A
|
||||
b1 = -2*cos(w0)
|
||||
b2 = 1 - alpha*A
|
||||
a0 = 1 + alpha/A
|
||||
a1 = -2*cos(w0)
|
||||
a2 = 1 - alpha/A
|
||||
|
||||
A = [a0 a1 a2] / a0;
|
||||
B = [b0 b1 b2] / a0;
|
||||
|
||||
if nargout==0
|
||||
freqz(B,A);
|
||||
title('Boost Frequency Response')
|
||||
end
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
function [Bp,Ap] = boost3(fs, fc, bw, gain, P);
|
||||
%BOOST - Design a boost filter at given gain, center
|
||||
% frequency fc, bandwidth bw, and sampling rate fs
|
||||
% (default = 1).
|
||||
%
|
||||
% Cookbook formulae for audio EQ biquad filter coefficients
|
||||
% by Robert Bristow-Johnson <rbj@audioimagination.com>
|
||||
|
||||
Q = bw/fs;
|
||||
|
||||
Bp = zeros(P, 3);
|
||||
Ap = zeros(P, 3);
|
||||
for p=1:P,
|
||||
kp = IIRCalcQp(p, P);
|
||||
[Bp(p,:),Ap(p,:)] = peaking(fs, fc, kp*Q, gain);
|
||||
endfor
|
||||
|
||||
B = Bp(1,:);
|
||||
A = Ap(1,:);
|
||||
if nargout==0
|
||||
close
|
||||
freqz(B,A);
|
||||
title('Boost Frequency Response')
|
||||
end
|
||||
|
||||
endfunction
|
||||
|
||||
function [B,A] = peaking(fs, fc, Q, K)
|
||||
k1=-cos(2*pi*fc/fs);
|
||||
|
||||
if K < 1
|
||||
k2=(1-tan(Q/K/2))/(1+tan(Q/K/2));
|
||||
else
|
||||
k2=(1-tan(Q/2))/(1+tan(Q/2));
|
||||
end
|
||||
Pz = [1 k1*(1+k2) k2]; % define denominator coefficients
|
||||
Qz = [k2 k1*(1+k2) 1]; % define numerator coefficients
|
||||
Num = (Pz*(1+K) + Qz*(1-K))/2;
|
||||
Den = Pz;
|
||||
B = Num;
|
||||
A = Den;
|
||||
|
||||
endfunction
|
||||
|
||||
function kp = IIRCalcQp(p, P)
|
||||
kp = 1.0/(2*sin(pi*(2*p-1)/(2*P)));
|
||||
|
||||
endfunction
|
||||
@@ -0,0 +1,43 @@
|
||||
function [Bp,Ap] = boost3a(fs, fc, bw, gain, P);
|
||||
%BOOST - Design a boost filter at given gain, center
|
||||
% frequency fc, bandwidth bw, and sampling rate fs
|
||||
% (default = 1).
|
||||
%
|
||||
% Cookbook formulae for audio EQ biquad filter coefficients
|
||||
% by Robert Bristow-Johnson <rbj@audioimagination.com>
|
||||
|
||||
Q = bw/fs;
|
||||
|
||||
Bp = zeros(P, 3);
|
||||
Ap = zeros(P, 3);
|
||||
for p=1:P,
|
||||
kp = IIRCalcQp(p, P);
|
||||
[Bp(p,:),Ap(p,:)] = peaking(fs, fc, kp*Q, gain);
|
||||
endfor
|
||||
|
||||
B = Bp(1,:);
|
||||
A = Ap(1,:);
|
||||
if nargout==0
|
||||
close
|
||||
freqz(B,A);
|
||||
title('Boost Frequency Response')
|
||||
end
|
||||
|
||||
endfunction
|
||||
|
||||
function [B,A] = peaking(fs, fc, Q, K)
|
||||
k1=-cos(2*pi*fc/fs);
|
||||
k2=(1-tan(Q/2))/(1+tan(Q/2));
|
||||
Pz = [1 k1*(1+k2) k2]; % define denominator coefficients
|
||||
Qz = [k2 k1*(1+k2) 1]; % define numerator coefficients
|
||||
Num = (Pz*(1+K) + Qz*(1-K))/2;
|
||||
Den = Pz;
|
||||
B = Num;
|
||||
A = Den;
|
||||
|
||||
endfunction
|
||||
|
||||
function kp = IIRCalcQp(p, P)
|
||||
kp = 1.0/(2*sin(pi*(2*p-1)/(2*P)));
|
||||
|
||||
endfunction
|
||||
@@ -0,0 +1,81 @@
|
||||
## Copyright (C) 2020 Jens
|
||||
##
|
||||
## This program is free software: you can redistribute it and/or modify it
|
||||
## under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, either version 3 of the License, or
|
||||
## (at your option) any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful, but
|
||||
## WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program. If not, see
|
||||
## <https://www.gnu.org/licenses/>.
|
||||
|
||||
## -*- texinfo -*-
|
||||
## @deftypefn {} {@var{retval} =} eq_eval (@var{input1}, @var{input2})
|
||||
##
|
||||
## @seealso{}
|
||||
## @end deftypefn
|
||||
|
||||
## Author: Jens <jens@orion>
|
||||
## Created: 2020-06-22
|
||||
|
||||
function points = eq_eval (filename_in)
|
||||
P = 1
|
||||
fs = 48000
|
||||
[x, fs] = audioread(filename_in);
|
||||
filename_out = to_filename_out(filename_in, "out");
|
||||
|
||||
points = [];
|
||||
points = addPoint_peak_notch(points, 120, 60, 6, P);
|
||||
points = addPoint_peak_notch(points, 540, 480, 3, P);
|
||||
points = addPoint_peak_notch(points, 1250, 2500, -3, P);
|
||||
points = addPoint_peak_notch(points, 8000, 8000, 12, P);
|
||||
points = addPoint_peak_notch(points, 4000, 8000, -12, P);
|
||||
points = addPoint_peak_notch(points, 15625, 1000, -16, P);
|
||||
|
||||
Np = length(points)
|
||||
y = x;
|
||||
|
||||
for n = 1:Np,
|
||||
P = points(n).P;
|
||||
gain = 10^(points(n).g/20);
|
||||
|
||||
[B,A] = boost3(fs, points(n).f, points(n).b, gain, P);
|
||||
|
||||
for p=1:P,
|
||||
y = filter(B(p,:), A(p,:), y);
|
||||
end
|
||||
endfor
|
||||
audiowrite(filename_out, y./max(y), fs)
|
||||
|
||||
% Audition
|
||||
for n = 1:Np,
|
||||
P = points(n).P;
|
||||
gain = 10^(points(n).g/20);
|
||||
|
||||
[B,A] = boost3(fs, points(n).f, points(n).b, gain, P);
|
||||
|
||||
for p=1:P,
|
||||
y = filter(B(p,:), A(p,:), x) - x;
|
||||
end
|
||||
suffix = sprintf("%d_%d_%d", points(n).f, points(n).b, points(n).g);
|
||||
filename_aud = to_filename_out(filename_in, suffix);
|
||||
|
||||
audiowrite(filename_aud, y, fs)
|
||||
|
||||
endfor
|
||||
|
||||
endfunction
|
||||
|
||||
function points_out = addPoint_peak_notch(points_in, fc_Hz, bw_Hz, gain_dB, P)
|
||||
p.f = fc_Hz;
|
||||
p.b = bw_Hz;
|
||||
p.g = gain_dB;
|
||||
p.P = P;
|
||||
p.type = "PeakNotch";
|
||||
points_out = [points_in p];
|
||||
endfunction
|
||||
+1
-1
@@ -63,7 +63,7 @@ function kalman_eval(varargin)
|
||||
Z = zeros(N,1); % Matrix Z is the measurement noise
|
||||
Y = zeros(N,1); % Matrix Y contains measurement data
|
||||
|
||||
H(2,2) = 0;
|
||||
% H(2,2) = 0;
|
||||
|
||||
% Known are xp (k|k ), u(k ), P(k|k ) and the new measurement z(k+1).
|
||||
_x = [];
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
function diba_aktie(N, kurs, k_var)
|
||||
|
||||
v_nom = N*kurs
|
||||
provision_fix = min(69.90, 4.90 + 0.25/100*v_nom)
|
||||
provision_var = k_var * v_nom
|
||||
|
||||
v_eff = provision_fix + provision_var + v_nom
|
||||
|
||||
|
||||
endfunction
|
||||
@@ -0,0 +1,48 @@
|
||||
## Copyright (C) 2019 Jens
|
||||
##
|
||||
## This program is free software: you can redistribute it and/or modify it
|
||||
## under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, either version 3 of the License, or
|
||||
## (at your option) any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful, but
|
||||
## WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program. If not, see
|
||||
## <https://www.gnu.org/licenses/>.
|
||||
|
||||
## -*- texinfo -*-
|
||||
## @deftypefn {} {@var{retval} =} tempsensor_eval (@var{input1}, @var{input2})
|
||||
##
|
||||
## @seealso{}
|
||||
## @end deftypefn
|
||||
|
||||
## Author: Jens <jens@orion>
|
||||
## Created: 2019-04-01
|
||||
|
||||
function tempsensor_eval ()
|
||||
|
||||
data = load('temp.log');
|
||||
t = data(:,2);
|
||||
n = data(:,1);
|
||||
|
||||
dt = [0 diff(t)']';
|
||||
|
||||
L = 50
|
||||
dt2 = [];
|
||||
for S=1:(length(t)-L)
|
||||
W = (0:(L-1))';
|
||||
t(S:S+(L-1));
|
||||
tpf = polyfit(W, t(S:S+(L-1)), 1);
|
||||
dt2 = [dt2 tpf(1)*60];
|
||||
end
|
||||
|
||||
subplot(2,1,1)
|
||||
plot(n, t); grid;
|
||||
subplot(2,1,2)
|
||||
plot(1:length(dt2), dt2); grid;
|
||||
|
||||
endfunction
|
||||
Reference in New Issue
Block a user