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