Rework the matlab script / add functions
This commit is contained in:
		
										
											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
 | 
			
		||||
		Reference in New Issue
	
	Block a user