Rework the matlab script / add functions
This commit is contained in:
parent
9c7f96dd02
commit
44b0b55b73
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 102 KiB |
BIN
matlab/figs/super_sensor_time_domain_h2.pdf
Normal file
BIN
matlab/figs/super_sensor_time_domain_h2.pdf
Normal file
Binary file not shown.
BIN
matlab/figs/super_sensor_time_domain_h2.png
Normal file
BIN
matlab/figs/super_sensor_time_domain_h2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
1285
matlab/index.org
1285
matlab/index.org
File diff suppressed because it is too large
Load Diff
39
matlab/src/createWeight.m
Normal file
39
matlab/src/createWeight.m
Normal file
@ -0,0 +1,39 @@
|
||||
function [W] = createWeight(args)
|
||||
% createWeight -
|
||||
%
|
||||
% Syntax: [in_data] = createWeight(in_data)
|
||||
%
|
||||
% Inputs:
|
||||
% - n - Weight Order
|
||||
% - G0 - Low frequency Gain
|
||||
% - G1 - High frequency Gain
|
||||
% - Gc - Gain of W at frequency w0
|
||||
% - w0 - Frequency at which |W(j w0)| = Gc
|
||||
%
|
||||
% Outputs:
|
||||
% - W - Generated Weight
|
||||
|
||||
arguments
|
||||
args.n (1,1) double {mustBeInteger, mustBePositive} = 1
|
||||
args.G0 (1,1) double {mustBeNumeric, mustBePositive} = 0.1
|
||||
args.G1 (1,1) double {mustBeNumeric, mustBePositive} = 10
|
||||
args.Gc (1,1) double {mustBeNumeric, mustBePositive} = 1
|
||||
args.w0 (1,1) double {mustBeNumeric, mustBePositive} = 1
|
||||
end
|
||||
|
||||
mustBeBetween(args.G0, args.Gc, args.G1);
|
||||
|
||||
s = tf('s');
|
||||
|
||||
W = (((1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (args.G0/args.Gc)^(1/args.n))/((1/args.G1)^(1/args.n)*(1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (1/args.Gc)^(1/args.n)))^args.n;
|
||||
|
||||
end
|
||||
|
||||
% Custom validation function
|
||||
function mustBeBetween(a,b,c)
|
||||
if ~((a > b && b > c) || (c > b && b > a))
|
||||
eid = 'createWeight:inputError';
|
||||
msg = 'Gc should be between G0 and G1.';
|
||||
throwAsCaller(MException(eid,msg))
|
||||
end
|
||||
end
|
38
matlab/src/plotMagUncertainty.m
Normal file
38
matlab/src/plotMagUncertainty.m
Normal file
@ -0,0 +1,38 @@
|
||||
function [p] = plotMagUncertainty(W, freqs, args)
|
||||
% plotMagUncertainty -
|
||||
%
|
||||
% Syntax: [p] = plotMagUncertainty(W, freqs, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - W - Multiplicative Uncertainty Weight
|
||||
% - freqs - Frequency Vector [Hz]
|
||||
% - args - Optional Arguments:
|
||||
% - G
|
||||
% - color_i
|
||||
% - opacity
|
||||
%
|
||||
% Outputs:
|
||||
% - p - Plot Handle
|
||||
|
||||
arguments
|
||||
W
|
||||
freqs double {mustBeNumeric, mustBeNonnegative}
|
||||
args.G = tf(1)
|
||||
args.color_i (1,1) double {mustBeInteger, mustBePositive} = 1
|
||||
args.opacity (1,1) double {mustBeNumeric, mustBePositive} = 0.3
|
||||
args.DisplayName char = ''
|
||||
end
|
||||
|
||||
% Get defaults colors
|
||||
colors = get(groot, 'defaultAxesColorOrder');
|
||||
|
||||
p = patch([freqs flip(freqs)], ...
|
||||
[abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*(1 + abs(squeeze(freqresp(W, freqs, 'Hz')))); ...
|
||||
flip(abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*max(1 - abs(squeeze(freqresp(W, freqs, 'Hz'))), 1e-6))], 'w', ...
|
||||
'DisplayName', args.DisplayName);
|
||||
|
||||
p.FaceColor = colors(args.color_i, :);
|
||||
p.EdgeColor = 'none';
|
||||
p.FaceAlpha = args.opacity;
|
||||
|
||||
end
|
43
matlab/src/plotPhaseUncertainty.m
Normal file
43
matlab/src/plotPhaseUncertainty.m
Normal file
@ -0,0 +1,43 @@
|
||||
function [p] = plotPhaseUncertainty(W, freqs, args)
|
||||
% plotPhaseUncertainty -
|
||||
%
|
||||
% Syntax: [p] = plotPhaseUncertainty(W, freqs, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - W - Multiplicative Uncertainty Weight
|
||||
% - freqs - Frequency Vector [Hz]
|
||||
% - args - Optional Arguments:
|
||||
% - G
|
||||
% - color_i
|
||||
% - opacity
|
||||
%
|
||||
% Outputs:
|
||||
% - p - Plot Handle
|
||||
|
||||
arguments
|
||||
W
|
||||
freqs double {mustBeNumeric, mustBeNonnegative}
|
||||
args.G = tf(1)
|
||||
args.color_i (1,1) double {mustBeInteger, mustBePositive} = 1
|
||||
args.opacity (1,1) double {mustBeNumeric, mustBePositive} = 0.3
|
||||
args.DisplayName char = ''
|
||||
end
|
||||
|
||||
% Get defaults colors
|
||||
colors = get(groot, 'defaultAxesColorOrder');
|
||||
|
||||
% Compute Phase Uncertainty
|
||||
Dphi = 180/pi*asin(abs(squeeze(freqresp(W, freqs, 'Hz'))));
|
||||
Dphi(abs(squeeze(freqresp(W, freqs, 'Hz'))) > 1) = 360;
|
||||
|
||||
% Compute Plant Phase
|
||||
G_ang = 180/pi*angle(squeeze(freqresp(args.G, freqs, 'Hz')));
|
||||
|
||||
p = patch([freqs flip(freqs)], [G_ang+Dphi; flip(G_ang-Dphi)], 'w', ...
|
||||
'DisplayName', args.DisplayName);
|
||||
|
||||
p.FaceColor = colors(args.color_i, :);
|
||||
p.EdgeColor = 'none';
|
||||
p.FaceAlpha = args.opacity;
|
||||
|
||||
end
|
Loading…
Reference in New Issue
Block a user