mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
All of these code samples currently are mis-identified in my repositories. I'm donating them to the cause.
76 lines
2.0 KiB
Matlab
76 lines
2.0 KiB
Matlab
function Yc = plant(varargin)
|
|
% function Yc = plant(varargin)
|
|
%
|
|
% Returns the system plant given a number.
|
|
%
|
|
% Parameters
|
|
% ----------
|
|
% varargin : variable
|
|
% Either supply a single argument {num} or three arguments {num1, num2,
|
|
% ratio}. If a single argument is supplied, then one of the six transfer
|
|
% functions will be chosen from the list. If three arguments are chosen, a
|
|
% parallel sum of the two plants will be returned.
|
|
%
|
|
% Option 1
|
|
% --------
|
|
% num : integer, {1, 2, 3, 4, 5, 6}
|
|
% A number between 1 and 6 corresponding to the five plants.
|
|
% Option 2
|
|
% --------
|
|
% num1 : integer, {1, 2, 3, 4, 5, 6}
|
|
% A number between 1 and 6 corresponding to the five plants.
|
|
% num2 : integer, {1, 2, 3, 4, 5, 6}
|
|
% A number between 1 and 6 corresponding to the five plants.
|
|
% percent : double
|
|
% The percentage multiplier of the first plant. Should be between 0
|
|
% and 1. The percentage multiplier of the second plant will be 1 -
|
|
% percent.
|
|
%
|
|
% Returns
|
|
% -------
|
|
% Either a single plant or a parallel sum of scaled plants.
|
|
%
|
|
% Option 1
|
|
% --------
|
|
% Yc : transfer function
|
|
% 1 : 1 / s
|
|
% 2 : 1 / s(s + 1)
|
|
% 3 : 1 / s(s + 0.2)
|
|
% 4 : 10 / (s + 10)
|
|
% 5 : 5 / (s + 10)
|
|
% 6 : 10 / (s^2 +.2 * s)
|
|
%
|
|
% Option 2
|
|
% --------
|
|
% Yc : transfer function
|
|
% Yc = percent * Yc1 + (1 - percent) * Yc2, where Yc1 and Yc2 are plants
|
|
% from the list shown in Option 1.
|
|
|
|
if size(varargin, 2) > 1
|
|
if 0 <= varargin{3} & varargin{3} <= 1
|
|
Yc = parallel(varargin{3} * choose_plant(varargin{1}), ...
|
|
(1 - varargin{3}) * choose_plant(varargin{2}));
|
|
else
|
|
error('Ratio must be between 0 and 1.')
|
|
end
|
|
else
|
|
Yc = choose_plant(varargin{1});
|
|
end
|
|
|
|
function p = choose_plant(num)
|
|
if num == 1;
|
|
p = tf(1.0, [1.0, 0.0]);
|
|
elseif num == 2;
|
|
p = tf(1.0, [1.0, 1.0, 0.0]);
|
|
elseif num == 3;
|
|
p = tf(1.0, [1.0, 0.2, 0.0]);
|
|
elseif num == 4;
|
|
p = tf(10.0, [1.0, 10.0]);
|
|
elseif num == 5;
|
|
p = tf(5.0, [1.0, 10.0]);
|
|
elseif num == 6;
|
|
p = tf(10.0, [1.0, 0.2, 0.0]);
|
|
else
|
|
display('Invalid plant number.')
|
|
end
|