size( ):获取矩阵的行数和列数
( 1 )s=size(A),
当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。
( 2 )[r,c]=size(A),
当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c.
( 3 ) size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列姿其中r=size(A,1)该语句返回的时矩阵A的行数,c=size(A,2)该语句返回的时矩阵A的列数。
prod():对矩阵行/列元素进行乘积运算
(1)prod(A),
当A矩阵为行/列矩阵时,返回一个数,数的大小为该矩阵所有元素的乘积。当A为非行/列矩阵时,返回一个列矩阵,每一列的数为矩阵A每一列元素的乘积的大小。
(2)prod(A,1/2),
为1时,仍然是按照列进行相乘,为2时,对矩阵A按行相乘。
例:a=[1 2 3 4],prod(a)=24;
a=[1 2;3 4],prod(a)=[3 8]
a=[1 2;3 4],prod(a,1)=[3 8]
a=[1 2;3 4],prod(a,2)=[2 12]
zeros():生成零矩阵
zeros(n):生成n行n列的每一个元素都为零的矩阵
zeros(m,n):生成m行n列的每一个元素都为零的矩阵
ones():生成全1矩阵
用法与zeros函数一样
evalfis(输入,模糊控制规则):进行模糊推理
模糊推理规则有三条:
If 温度“冷”and压力“高”,then阀门角度增量为“正”
If 温度“热”and 压力“高”,then阀门角度增量为“负”
If 压力“正常” then阀门角度增量为“零”
根据上述要求可设计出模糊控制器,MATLAB程序如下:
pc1=newfis('pc1')
pc1=addvar(pc1,'input','温度',[0 30];
pc1=addvar(pc1,'input','压力',[0 3]);
pc1=addvar(pc1,'output','增量’,[-10,10]),
pc1=addmf(pc1, ' input',1,'冷','trapmf' ,[0 0 10 20l);
pc1=addmf(pc1, ' input',1,'热' ,'trapmf',[10 20 30 30]),
pc1=addmf(pc1, ' input',2,'正常’,' trimf',[0 1 2]),
pc1=addmf(pc1,'input',2 '高','traprmf',[1 2 3 3]);
pc1=addmf(pc1,'output',1,'负',‘trimf’,[-10 -5 0]);
pc1=addmf(pc1,'output',1,'零','trimf',[-5,0,5]);
pc1=addmf(pc1,'otput',1,'正','trimf',[0 5 10]);
rulelist[1 2 3 1 1;2 2 1 1 1;0 1 2 1 2];
pc1=addrule(pc1,rulelist);
这样就得到了模糊控制器(名为pc1的FIS结构),然后可以根据过程的温度和压力通过模糊控制器计算出过程控制的输入,例如,当t=5 ℃,P=2,则
evalfis([5 2],pc1)
ans=5
这说明模糊控制器的输出为5 ℃。