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
 |