属性约简(MATLAB算法)有实例有讲解
MatLab1第一讲 MatLab简介及基本运算
MatLab & 数学建模第一讲MatLab简介及基本运算一、MatLab简介MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。
那是20世纪七十年代后期的事:时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。
经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert 合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。
从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。
MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰,而改以MATLAB为平台加以重建。
在时间进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。
在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为内容。
这几乎成了九十年代教科书与旧版书籍的区别性标志。
在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。
在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。
在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用。
在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。
如美国National Instruments公司信号测量、分析软件LabVIEW,Cadence 公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑。
matlab_简明实例教程
matlab_简明实例教程MATLAB是一种强大的科学计算工具,广泛应用于科学研究、数据分析和工程计算等领域。
它具有简单易用的语法和丰富的函数库,可以快速实现复杂的计算任务。
本教程将为你提供一些简单实例,帮助你入门MATLAB。
1.计算圆的面积和周长```matlabradius = input('请输入圆的半径:');area = pi * radius^2;circumference = 2 * pi * radius;disp(['圆的面积为:', num2str(area)]);disp(['圆的周长为:', num2str(circumference)]);```2.计算两个向量的点积```matlabv1 = input('请输入向量1(用逗号分隔元素):');v2 = input('请输入向量2(用逗号分隔元素):');dot_product = dot(v1, v2);disp(['两个向量的点积为:', num2str(dot_product)]);```3.绘制正弦曲线```matlabx = 0:0.1:2*pi;y = sin(x);plot(x, y);xlabel('x');ylabel('sin(x)');title('正弦曲线');```4.求解方程```matlabsyms x;eqn = x^2 - 4 == 0;sol = solve(eqn, x);disp(['方程的解为:', char(sol)]); ```5.读取和写入文件```matlabfilename = 'data.txt';data = importdata(filename);disp('文件中的数据:');disp(data);output = [1 2 3; 4 5 6; 7 8 9];dlmwrite('result.txt', output, 'delimiter', '\t', 'precision', 4);disp('结果已保存到result.txt文件中。
Matlab技术优化算法演示与讲解
Matlab技术优化算法演示与讲解近年来,随着科技的不断发展和应用领域的扩大,优化算法在解决实际问题中起到了重要的作用。
而Matlab作为一种功能强大的数学软件,其内置的优化算法工具包更是为解决复杂问题提供了便利。
本文将就Matlab技术中的优化算法进行演示和讲解,希望能给读者带来一些启发和帮助。
一、优化问题的概述优化问题可以理解为在给定的约束下,找到最优解的过程。
在实际应用中,优化问题的种类繁多,涉及到经济、工程、设计等多个领域。
Matlab提供了多种优化算法,能够解决不同类型的优化问题。
二、目标函数与约束在优化问题中,目标函数是需要最小化或最大化的函数。
约束则是目标函数需要满足的条件。
在Matlab中,我们可以使用符号计算工具箱来定义目标函数和约束条件。
这样可以方便地进行符号计算和优化算法的应用。
三、最优化算法的分类在Matlab中,最优化算法可分为无约束优化算法和有约束优化算法两类。
在无约束优化算法中,常用的有梯度下降法、拟牛顿法等。
而有约束优化算法则包括线性规划、非线性规划等方法。
四、最优化算法的应用案例为了更好地理解和演示Matlab中的最优化算法,我们选取了一个经典的案例:拟合曲线问题。
假设我们需要根据给定的数据点,找到最佳拟合曲线。
在Matlab 中,可以使用最小二乘法进行曲线拟合,即将目标函数定义为误差的平方和,通过最优化算法求得最佳拟合曲线的参数。
五、案例演示首先,我们准备了一组数据点,作为拟合目标。
通过绘制散点图,我们可以直观地观察到数据点的分布特征。
接下来,我们定义了目标函数和约束条件,并使用最小二乘法进行优化。
最后,通过绘制拟合曲线和数据点,可以清晰地看到优化算法的效果。
六、优化算法的性能评估在实际应用中,我们需要对优化算法的性能进行评估,以选择合适的算法来解决问题。
常用的性能评估指标包括收敛速度、精确度和稳定性等。
在Matlab中,可以使用内置的性能评估函数来进行评估,比如计算优化算法的收敛速度和最优解的精确度等。
Matlab简介PPT课件
矩阵运算与线性代
03
数应用
矩阵创建和操作方法介绍
01
直接输入法
通过直接输入矩阵元素来创建矩阵,例如`A = [1 2 3; 4 5 6; 7 8 9]`。
02
函数生成法
利用Matlab内置函数生成特定矩阵,如`zeros()`生成全零矩阵,
`ones()`生成全一矩阵,`eye()`生成单位矩阵等。
错误处理方法
根据错误信息提示,检查代码相关部分, 修正错误;对于复杂问题,可采用逐步缩 小范围的方法进行排查。
综合性程序设计案例剖析
案例选择
挑选具有代表性的综合性程序设计案例 ,如数值计算、信号处理、图像处理等
。
代码实现
详细讲解案例的代码实现过程,包括 算法设计、数据结构选择、函数编写
等。
案例分析
Matlab实现
使用Matlab内置函数进行最优化问题求解,如`fmincon`、`ga`等。
偏微分方程数值解法
01
偏微分方程基本概 念
包含未知函数及其偏导数的方程 。
02
偏微分方程数值解 法
有限差分法、有限元法、谱方法 等。
03
Matlab实现
使用Matlab内置函数或工具箱进 行偏微分方程数值求解,如PDE Toolbox等。
分析案例涉及的知识点、难点及解决 方案,引导学生深入理解并掌握相关 知识。
结果展示与讨论
展示案例运行结果,并引导学生进行 讨论,分析程序优缺点及改进方向。
课程设计或项目实践指导
选题建议
根据学生兴趣和专业背景,提供课程设计或项目实践的选题建议,如 控制系统设计、信号处理应用等。
实践指导
指导学生进行需求分析、方案设计、代码编写、测试调试等实践环节 ,培养学生解决实际问题的能力。
Matlab优化算法以及应用案例分析
Matlab优化算法以及应用案例分析引言Matlab是一款功能强大的数学软件,以其丰富的功能和灵活的编程环境而受到广泛的应用。
在数学建模和优化问题中,Matlab优化算法是一个重要的工具。
本文将介绍Matlab优化算法的基本原理和常见应用案例分析。
一、Matlab优化算法的基本原理1.1 最优化问题的定义在开始介绍优化算法之前,我们首先需要了解什么是最优化问题。
最优化问题可以定义为在一定的约束条件下,找到使得目标函数达到最大或者最小的变量取值。
最优化问题可以分为无约束问题和约束问题两种。
1.2 Matlab优化工具箱Matlab提供了丰富的优化工具箱,其中包含了许多优化算法的实现。
这些算法包括无约束优化算法、约束优化算法、全局优化算法等。
这些工具箱提供了简单易用的函数接口和丰富的算法实现,方便用户在优化问题中使用。
1.3 优化算法的分类优化算法可以分为传统优化算法和启发式优化算法两类。
传统优化算法包括梯度下降法、牛顿法、共轭梯度法等,它们利用目标函数的一阶或二阶导数信息进行搜索。
而启发式优化算法则通过模拟生物进化、遗传算法、蚁群算法等方法来进行搜索。
二、Matlab优化算法的应用案例分析2.1 无约束优化问题无约束优化问题是指在没有约束条件的情况下,找到使得目标函数达到最小或最大值的变量取值。
在Matlab中,可以使用fminunc函数来求解无约束优化问题。
下面以一维函数的最小化问题为例进行分析。
首先,我们定义一个一维的目标函数,例如f(x) = 3x^2 - 4x + 2。
然后使用fminunc函数来求解该问题。
代码示例:```matlabfun = @(x)3*x^2 - 4*x + 2;x0 = 0; % 初始点[x, fval] = fminunc(fun, x0);```在上述代码中,fun是目标函数的定义,x0是初始点的取值。
fminunc函数将返回最优解x和目标函数的最小值fval。
属性约简(MATLAB算法)有实例有讲解
粗糙集属性约简注:这是我学粗糙集时老师给的作业属性约简的顺序如下:求正域、生成未经处理的区分矩阵、对区分矩阵进行化简、求核、对已经处理过的区分矩阵进行属性约简。
约简后的决策表有26行,所有12个属性都是正域中的属性,核为空程序:% main.mtic;a=[ 1,1,1,1,0,0,0,0,1,1,0,1;0,0,0,0,0,0,0,0,0,0,0,0;1,0,1,0,0,0,0,0,0,1,0,0;0,0,0,1,1,1,1,0,1,0,1,1;1,0,0,1,1,1,1,1,0,1,1,0;0,1,0,1,1,1,1,1,1,0,0,1;1,0,0,0,1,1,1,0,0,1,1,1;1,1,1,1,0,0,0,0,1,1,0,1;1,0,1,1,1,0,0,0,1,1,0,1;1,1,1,1,0,0,0,0,1,1,0,1;1,0,1,1,1,0,0,0,1,1,0,1;1,0,1,1,1,0,0,0,1,1,0,1 ];d=[1;0;0;0;0;0;0;1;1;1;1;1];pos=posCD(a,d);dismat=dismatrix(a,d,pos);dism=disbe(dismat);core=cor(dism); [red,row]=redu(dism); time=toc% dismatrix.m% 生成未经处理的区分矩阵dismatfunction dismat=dismatrix(a,d,pos)[m,n]=size(a);p=1;index1=0;index2=0;index=0;dis=-1*ones(m*(m-1)/2,n);for i=1:mfor j=i+1:mif (isxbelongtopos(i,pos)&~isxbelongtopos(j,pos))...|(~isxbelongtopos(i,pos)&isxbelongtopos(j,pos)). ..|(isxbelongtopos(i,pos)&isxbelongtopos(j,pos)&~i sxybelongtoindD(i,j,d))index2=1;endif index2==0continue;endfor k=1:nif a(i,k)~=a(j,k)dis(p,k)=1;index1=1;else dis(p,k)=0;endendif index1==1p=p+1;index=1;endindex1=0;index2=0;endendif p<=m*(m-1)/2if index==0dismat=[];return;endif dis(p,1)==-1p=p-1;endelse p=m*(m-1)/2;enddismat=dis(1:p,:);% redu.m% 对已经处理过的区分矩阵进行知识约简function [red,row]=redu(dism)[m,n]=size(dism);red=[];row=0;if m<=0return;endfor i=1:nif dism(1,i)~=0row=row+1;endendred(1:row,:)=zeros(row,n);j=1;for i=1:rowwhile dism(1,j)==0j=j+1;endred(i,j)=1;j=j+1;endtemp=[];tempdis=[];rowd=0;rowd1=0;for i=2:mj=1;while j<=rowtemp=uni(dism(i,:),red(j,:));[s,n]=size(temp);rowd1=rowd+s;tempdis(rowd+1:rowd1,:)=temp;rowd=rowd1;j=j+1;temp=[];endred=[];red=disbe(tempdis);tempdis=[];[row,n]=size(red);rowd=0;rowd1=0;end% disbe.m% 对区分矩阵或者约简矩阵进行化简即去掉包含关系function dism=disbe(dis)[m,n]=size(dis);p=m;for i=1:mif dis(i,1)~=-1for j=1:mif i~=j & dis(j,1)~=-1if dis(i,:)<=dis(j,:)dis(j,1)=-1;p=p-1;elseif dis(i,:)>=dis(j,:)dis(i,:)=dis(j,:);dis(j,1)=-1;p=p-1;endendendendenddism=ones(p,n);j=1;for i=1:pwhile j<=m & dis(j,1)==-1j=j+1;enddism(i,:)=dis(j,:);j=j+1;end% posCD.m% a为条件属性矩阵,d为决策属性向量% pos为正域,保存条件属性矩阵的索引值function pos=posCD(a,d)[m,n]=size(a);p=m;index=0;for i=1:mif a(i,1)~=-1for j=i+1:mif a(j,1)~=-1 &(a(i,:)==a(j,:)&d(i)~=d(j))a(j,1)=-1;p=p-1;index=1;endendif index==1a(i,1)=-1;p=p-1;index=0;endendendpos=zeros(p,1);i=1;for r=1:pwhile a(i,1)==-1&i<=mi=i+1;endpos(r)=i;r=r+1;i=i+1;end% cor.m% 对已经处理过的区分矩阵求核function core=cor(dism)[m,n]=size(dism);core1=zeros(1,n);number=0;for i=1:mnum=0;p=0;for j=1:nif dism(i,j)~=0num=num+1;p=j;endendif num==1core1(p)=1;number=number+1;endendif number==0core=0;elsecore=zeros(1,number);j=1;for i=1:numberwhile core1(j)==0j=j+1;endcore(i)=core1(j);j=j+1;endend% uni.m%对区分矩阵的第i行和red(j,:)运算,即将a中%所有的1分别插入到red(j,:)中,待去掉包含关系function tempred=uni(disa,red)[m,n]=size(red);num=0;for i=1:nif disa(i)~=0num=num+1;endendtempred=ones(m*num,n);temp=[];j=1;for i=1:numwhile disa(j)==0j=j+1;endtemp=red;temp(:,j)=ones(m,1);tempred((i-1)*m+1:i*m,:)=temp;j=j+1;end% isxbelongtopos.m% 判断x是否在正域pos中% x为索引值% 返回值p,如果x在pos中p=1否则p=0 function p=isxbelongtopos(x,pos)[m,n]=size(pos);p=0;if x<=0p=-1;return;endfor i=1:mif x==pos(i)p=1;break;endend% isxybelongtoindD.m% 判断x,y是否在indD中% x,y为索引值% 返回值p,如果x,y在indD中p=1否则p=0 function p=isxybelongtoindD(x,y,d)if x<=0 | x>size(d) | y<=0 | y>size(d) p=-1;return;endif d(x)==d(y)p=1;else p=0;end约简后的决策表如有侵权请联系告知删除,感谢你们的配合!。
一种改进的区分矩阵属性约简算法
⼀种改进的区分矩阵属性约简算法
⼀种改进的区分矩阵属性约简算法
李智玲;胡彧
【摘要】属性约简是粗糙集理论研究的关键问题之⼀.⽂章以属性在区分矩阵中出现的频率作为启发,对HORAFA算法做了⼀些改进.提出了HORAFA-
AFVDM(HORAFA basg on Attribute frequency value of discernibility matrix)算法.它是以核为基础,加⼊属性重要性最⼤的属性,直到不能再加.为了能找到信息系统的最优约简,在此基础上加了⼀个反向消除过,.直到不能再删为⽌.最后在MATLAB环境下进⾏了实验,通过⽐较改进前后两种算法,表明HORAFA-AFVDM 算法在属性约简情况和算法运⾏时间上都⽐HORAFA算法有明显的改进.
【期刊名称】《计算机系统应⽤》
【年(卷),期】2008(017)010
【总页数】5页(P51-55)
【关键词】粗糙集;属性约简;区分矩阵;最优约简;MATLAB
【作者】李智玲;胡彧
【作者单位】⼭西财经⼤学,信息管理学院,⼭西太原,030031;太原理⼯⼤学,计算机与软件学院,⼭西,太原,030024;⼭西财经⼤学,信息管理学院,⼭西太原,030031;太原理⼯⼤学,计算机与软件学院,⼭西,太原,030024
【正⽂语种】中⽂
【中图分类】⼯业技术。
数值分析第二讲MATLAB简介-41页PPT资料
compan(A)取伴随阵, diag(d)取对角阵,gallery取试验 矩阵,handmard取Handmard阵 ,hankel取Hankel阵, hilb取希尔伯特阵,invhilb取逆希尔伯特阵,kron取克 罗内克张量积,magic取魔方矩阵,pascal取Pascal 阵, toeplotz取Toeplotz矩阵,vander取范得蒙矩阵 , wilkinson取Wilkinson特性实验矩阵
运算符
数值运算 +加 -减 *乘 / 右除 \ 左除 ^幂 .+点加,.-点减, .*点乘, ./点右除, .\点左除,.^点幂
逻辑运算(还有相应的函数) ==等于,~=不等于,<小于,> 大于, <=小于或等于,>=大于或等于, && 逻辑与,||逻辑或,~逻辑非, 位运算(还有相应的函数) &位与,|位或,~位非 括号运算 ()⑴改变运算优先,⑵函数定义或调用的变量标志部分 []构造矩阵(元素间隔用逗号或空格,行间隔号用分号) ‘’ 构造字符或字符串常数 {}构造枚举集合,{‘a’,‘b’,‘c’,‘d’}
A1=A(1:2,2:4),B1=(2:3,1:3),C1=(1:3,2:3) ⑷ D1=A1+B1 ⑸ E1=sin(A1)+cos(B1) ⑹ F1=A1*C1
ቤተ መጻሕፍቲ ባይዱ
MATLAB常用函数名
数学函数(中文意义略)
abs,acos,acosh,angle,asin,asinh,atan,atan2,atanh, ceil,conj,cos,cosh,exp,fix,floor,gcd,imag,lcm,log, log10,real,rem,round,sign,sin,sinh,sqrt,tan,tanh, 构造矩阵函数
MATLAB实例简明教程-实用数学工具
常用操作键
键名
作用
键名
作用
↑
前寻式调回已输入过的 Home 使光标移到当前行的首端
指令行
↓
后寻式调回已输入过的 End
使光标移到当前行的尾端
指令行
←
在 当前行中左移光标 Delete
删除光标右表边的字符
→
在 当前行中右移光标 Backspa
删除光标左表边的字符
ce
PageUp 前寻式翻阅当前窗中的
Esc
2.7 函数 MATLAB 的强大功能可函数中略见一斑 本质上讲分为三类
1 内部函数 2 系统附带各种工具包中的 M 文件所提供的大量函数 3 用户自己增加的函数 这一特点是其他许多软件平台无法比拟的 MATLAB 提供的通用数理类函数包括 z 基本数学函数 z 特殊函数 z 基本矩阵函数 z 特殊矩阵函数 z 矩阵分解和分析函数 z 数据分析函数 z 微分方程求解 z 多项式函数 z 非线性方程及其优化函数 z 数值积分函数 z 信号处理函数 [例]
言 随时输入指令 即时给出运算结果是它的主要工作方式 当然更可以编制
程序 详见第七章
比如要计算 2 sin( 0.3π ) 的值 只要在光标位置处键入 1+ 5
2*sin(0.3*pi)/(1+sqrt(5))
然后按[Enter]键,该指令便被执行并给出结果
ans = 0.5000
下面介绍控制光标 对指令进行编辑的一些常用操作键
Predefined variables
系统预定义的变量
eps
计算机的最小正数 在 pc 机上 它等于 2−52
pi inf 或 Inf
圆周率π 的近似值 3.14159265358979 无穷大
Matlab使用方法详解
Matlab使用方法详解Matlab是一种广泛应用于科学计算、工程设计以及数据分析的高级编程语言和环境。
它的强大功能和易于使用性使其成为许多研究人员和工程师的首选软件之一。
本文将详细介绍Matlab常用的功能和使用方法,帮助读者快速入门和提高使用效率。
一、Matlab基本介绍Matlab是由MathWorks公司开发的一种计算机编程语言和环境。
它具有强大的数值计算和图形处理能力,能够有效地进行数据处理、模拟仿真、图像处理、符号计算等各种科学计算任务。
Matlab通过命令窗口、脚本和函数等方式进行交互式编程,具有简洁的语法和丰富的函数库,支持多种数据结构和矩阵运算。
二、Matlab环境设置在正式使用Matlab之前,我们需要进行一些基本的环境设置。
首先,安装Matlab软件,并确保系统具备所需的硬件要求。
然后,打开Matlab软件,在主界面的左上角可以看到一个命令窗口,这是我们与Matlab交互的主要窗口。
在命令窗口中,我们可以直接输入Matlab命令并执行,也可以编写脚本文件或者函数进行程序开发。
此外,Matlab还提供了丰富的图形用户界面工具箱,可以帮助开发者进行图形界面设计和数据可视化。
三、Matlab基本操作1. 变量和赋值在Matlab中,我们可以使用变量来存储数据并进行计算。
变量的命名规则与其他编程语言相似,需要遵循大小写敏感和命名规范。
例如,我们可以使用以下命令定义一个变量a,并给其赋值:a = 10;在这个例子中,我们将变量a赋值为10。
在Matlab中,变量的赋值是通过等号(=)来实现的。
2. 数组和矩阵运算Matlab是一种基于矩阵运算的语言,对于数组和矩阵的操作非常方便。
我们可以使用以下命令创建一个数组:b = [1, 2, 3, 4, 5];在这个例子中,我们创建了一个包含5个元素的数组b。
我们还可以使用以下命令创建一个矩阵:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];在这个例子中,我们创建了一个包含3行3列的矩阵A。
基于矩阵的模糊决策系统的属性约简算法
基于矩阵的模糊决策系统的属性约简算法代雪珍;常在斌【摘要】Abstact:The rough set theory is characterized by thematrix .According to the fuzzy informa‐tion systems and fuzzy decision system ,the relative concepts of fuzzy rough sets and rough fuzzy sets such as ,upper (lower) approximation operator etc .are defined by fuzzymatrix ,and the attribute reduction algorithms on them aregiven .Moreover ,the feasibility of the algorithm are verified by UCI sets .%通过矩阵刻画粗糙集理论,用模糊矩阵定义了模糊粗糙集的上(下)近似、重要度等概念,给出模糊决策系统的属性约简算法。
将其运用到信息系统的属性约简算法和模糊信息系统的属性约简算法中,用UCI数据集说明算法的可行性。
【期刊名称】《纺织高校基础科学学报》【年(卷),期】2015(000)002【总页数】6页(P224-229)【关键词】模糊等价矩阵;模糊粗糙集;上(下)近似;UCI数据集【作者】代雪珍;常在斌【作者单位】西安交通工程学院基础课部,陕西西安710300;西安交通工程学院基础课部,陕西西安710300【正文语种】中文【中图分类】O159;TP18粗糙集理论是由Pawlak于20世纪80年代初提出的一种研究不完整、不确定知识和数据的表达、学习、归纳的理论方法[1].知识约简作为粗糙集的一个重要应用,其目的是在保证分类不变性的前提下,通过知识约简,导出问题的决策或分类规则[2].然而这种模型在现实中往往会有很大的局限性.一方面,对于数值型数据,如果应用Pawlak 粗糙集,首先应对数值进行离散化,而离散化可能会导致对象某些信息集中[4-7];另一方面,现实中常见问题的信息是不精确的或者模糊的.因此,对粗糙集模型进行推广,即模糊粗糙集[9-12].在模糊粗糙集中,所有的属性值都可以是模糊的,属性的等价关系也对应地变为相似关系,因此连续属性值的离散化过程就被属性模糊化过程所替代,即将实数转化为相应的隶属度值,因而能够更加客观地表达现实世界[13-16].划分不仅可以用集合的形式表示,也可以用矩阵形式刻画.本文提出粗糙集理论中的相关概念的矩阵刻画,通过矩阵刻画粗糙集的上(下)近似、重要度等,并将其运用到经典信息系统的属性约简算法和模糊信息系统的属性约简算法中,为模糊信息系统的属性约简和知识获取提供新的思路和方法.1.1 相似关系对于模糊属性值的信息系统,对象u在属性a上的取值已不是Va={va1,va2,…,vak}中的元素,而是以不同隶属度隶属于Va的所有值.设μVai(u)为对象u隶属于值vai 的隶属度,因而将u在属性a上的取值表示为μa(u)=++…+,其中μVai(u)∈[0,1],μVai(u)=1.即由属性θ导出的关系矩阵中,矩阵元素已不再是0和1,而是对象ui和uj具有关系θ的程度.也就是在某一属性上取值的相似度,也称距离.因而该矩阵是一个模糊值的矩阵.如表1中矩阵元素可以用任意一种距离的求法得到.如rij=1-,Va表示所有对象在属性a上的值域区间长度.关系θ表示相似关系,则rij表示对象ui和uj具有关系θ的程度.若将μVai(u)的取值限制为离散的二值{0,1},同时要求μVai(u)=1,即只有某个μVai(u)=1,其余μVaj(u)=0(∀j≠i),此时的矩阵是经典系统中的等价矩阵,该模糊属性值系统还原成为经典集合论下的信息系统.1.2 模糊等价矩阵设U={u1,u2,…,un}是非空有限集(n>0).n为U中元素的个数n=|U|,称U为论域. 引理1[8] 若R为模糊等价矩阵,则R=R2=R3=…=Rn-1=Rn.引理2[8] R是模糊等价矩阵⟺对∀λ∈[0,1],Rλ是等价布尔矩阵(等价0-1矩阵),即经典系统中的等价矩阵.定理1[8] 模糊等价矩阵的交矩阵(对应元素取小)仍是等价矩阵.即若R{α}和R{β}都是模糊等价矩阵,则R{α,β}也是模糊等价矩阵.证明(1) 自反性.由R{α}和R{β}的等价性可知其满足自反性,即其对角线元素都是1,因而,对∀i 有R{α,β}(i,i)=min{R{α}(i,i),R{β}(i,i)}=1,即R{α,β}满足自反性. (2) 对称性.由R{α}=R{α}′和可得(R{α}∩R{β})′=(R{α})′∩(R{β})′=R{α}∩R{β},即其对称性满足.(3) 传递性.由R{α}和R{β}的等价性可知:R{α}=R{α}∘R{α},R{β}=R{β}∘R{β},则有即(R{α}∩R{β})2=R{α}∩R{β},R{α,β}满足传递性.综上,R{α,β}是等价矩阵.1.3 基于模糊等价矩阵的上(下)近似表示定义1 在模糊系统中,相对应的上下近似为: 设U为非空论域,R为模糊等价关系,A∈Φ(U),则模糊集合A的上下近似分别为在模糊决策系统DT=(U,C∪D,V,f)中,如果RC≤RD(其中RC是由属性全集诱导出的模糊等价矩阵;RD是由决策属性值诱导的模糊等价关系),则决策系统是一致的.否则,是不一致的.文中只讨论一致决策表的约简算法.2.1 模型相似矩阵与属性约简要得到RC,RD,需要建立模糊相似矩阵.定义矩阵元素为对∀a∈C,按距离度量定理2 由上述定义的模糊矩阵是模糊相似矩阵.证明Ra(i,i)=1-|ui(a)-ui(a)|/n=1,因而满足自反性,易知Ra(i,j)=Ra(j,i),即满足对称性,因此该矩阵是模糊相似矩阵.注一般情况下,上述构造的模糊矩阵不满足传递性,但由矩阵中的复合运算可以得到相应模糊等价矩阵.定义2 条件属性集B相对于决策属性D的正域为POSB(D)=X),其中(X)(x)=max{1-R(x,y),X(y)}为模糊等价矩阵的下近似,由粗糙模糊集的特性可知,此时的决策属性集X是明确的,即经典的.定义3 满足以下两条就是约简:(1) 在可接受的误差限内,约简前后保持正域的不变;(2) 在条件(1)的前提下属性数目最少.定义4 对于∀α∈C,给定的可接受的误差限d0(通常取d0<0.01),若有C-{α}(XD)=C(XD),则称α为C相对于D不必要的;若且d=σ(α)/(n×m)<d0,其中,则认为α是C相对于D在误差限d0下是可约的;若且d=σ(α)/(n×m)>d0,则称α为C相对于D是重要的即不可约的,也即独立的,此时α就是C相对于D的核属性;如果在B中每个属性都是C相对于D不可约的,那么属性子集B就称为独立的.定义5 对于BC,如果满足下面的两个条件:或是,若不存在这样的B,则只要在能接受的误差范围内即可,一般误差限d0<0.01,即d=σ(B)/(n×m)<d0,其中(2) 对于∀α∈B,都是C相对于D重要的.即B是独立的.则子集B是属性全集C的一个约简(其中RC、RB,RD都是模糊关系等价矩阵).在决策表中,对∀α∈C-B,定义属性重要度为ρ(α,C,B)=1-,其中σ(α)=tij|是差矩阵的所有元素绝对值之和.n是全集U中元素的个数,即n=|U|,m为矩阵的列数也就是分得的类的个数.2.2 算法步骤文中采用的度量方法是基于粗糙模糊集的决策表的属性约简算法.(1) 求决策系统相对核算法输入:决策系统DT=(U,C∪D,V,f).输出:该决策系统DT 的相对核COREC(D).步骤(1):设COREC(D)=∅;步骤(2):根据模糊矩阵的定义计算出RC,RD,对∀α∈C,计算和如果,则COREC(D)⟺COREC(D)∪{α};步骤(3):遍历后,输出COREC(D),算法结束.(2) 求决策系统属性约简算法输入:决策系统DT=(U,C∪D,V,f).输出:条件属性C 相对于决策属性D的相对约简B((B⊆C)∧(B∈REDC(D))).步骤(1):根据等价矩阵的定义计算出RC,RD(则有RC≤RD);步骤(2):令B=∅;步骤(3):求出COREC(D),且B⟺COREC(D);步骤(4):判断是否成立,若成立,则输出B,算法结束;否则转到步骤(5);步骤(5):对∀α∈C-B,计算α的属性重要度ρ(α,C,B),取B⟺B∪{β},其中{ρ(α,C,B)},转到步骤(4);步骤(6):输出B,算法结束.2.3 数值算例采用文献[9]中的粗糙模糊集算例:表2是一个气象信息决策表,条件属性集为{a,b,c},决策属性集为{d}.其中条件属性为模糊值.a,b,c表示气象特征:a为风力,取值(a1,a2),a1为风力大,a2为小;b为湿度,取值(b1,b2),b1为湿度高的隶属度,b2为湿度正常;c为温度,取值(c1,c2),c1为温度高的隶属度,c2为低的.用上述算法求出其核属性和约简.沿用文献[9]的定义距离其中‖μα(x),μα(y)‖,用‖μα(x)‖2=‖μα(x),μα(x)‖的度量方法得到模糊矩阵.容易证明由此得到的矩阵是模糊相似矩阵..然后对每条属性求其传递闭包得到模糊等价关系矩阵:由于).所以c是相对核,即B=COREC(D)={c},而a和b都是可约简的.进一步计算可知ρ(a,D,B)=ρ(b,D,B)=1-0/1×5=1,可知a和b相对于D的重要度是相等的,而且对于相对核B也是必要的,因此,约简结果为{a,c} {b,c}.为了验证前面提出的模糊等价关系矩阵属性约简算法的有效性,选取来自UCI公开数据库中的属性数较多的存在冗余属性的可能性较大的数据集“wine”进行实验分析.其中有13个属性,分别为数据集“wine”的前13列,包含178个对象,结果分成3类.对象1~59是第一类;60~130是第二类;131~178是第三类.第14列是决策值列,运用Matlab进行编程.过程如下:步骤(1):根据距离公式dij=1-|(va(ui)-va(uj))/Va|计算出13个属性的模糊相似矩阵. 步骤(2):根据得到的相似矩阵建立相应的模糊等价矩阵.步骤(3):通过对13个模糊等价矩阵取交,得到所有属性的模糊等价矩阵.根据第14列的分类结果,将决策属性转化为矩阵形式XD.根据下近似定义公式C(XD)=(1-RC)·XD计算出属性全集的下近似矩阵.步骤(4):计算核属性.选取精度dd=0.000 01的精确度要求作为约简条件;具体结果如下(其中a到m代表第一到第十三个属性;d1到d13是这13个属性的重要度值): d1=3.949 3×10-6属性a不是核,d2=4.709 2×10-6属性b不是核,d3=1.593 1×10-5属性c是核,d4=4.438 9×10-6属性d不是核,d5=6.054 8×10-6属性e不是核,d6=5.972 1×10-6属性f不是核,d7=7.840 1×10-6属性g不是核,d8=1.349 0×10-5属性h是核,d9=4.712 4×10-6属性i不是核,d10=3.975 4×10-6属性j不是核,d11=4.133 1×10-6属性k不是核,d12=9.150 2×10-6属性l不是核,d13=7.695 1×10-6属性m不是核.因而取相对核为COREC(D)={c,h}.步骤(5):令约简COREC(D)={c,h},计算B对D的下近似等价矩阵,并计算其重要度d(B)=1.463 9×10-4>dd=1×10-5,所以没有满足约简结束条件.进入步骤(6).步骤(6):依据重要度排序首先d进入约简:B=COREC(D)∪{d}={c,h,d},这时B的重要度为d(B)=5.562 3×10-5> dd=1×10-5,约简仍然不能结束,重复这个过程,当约简为B={c,h,d,l,m,i,g}时,d=7.843 8×10-6< dd=1×10-5,达到精度要求.至此,算法结束.即该模糊信息决策系统在d=0.000 01的精确度下属性约简结果为B={c,h,d,l,m,i,g}; 当约简后的属性为6个,即B={c,h,d,l,m,i}时,其精度为d=1.038 9×10-5;约简B={c,h,d,l,m}时,精度为d=1.753 7×10-5.属性约简是信息系统面临的主要问题之一,合理的属性约简可以起到非常有效的作用,对于知识获取、决策分析等起到指导作用.粗糙集的属性约简方法研究也十分丰富,促进了该领域的研究.划分不仅可以用集合的形式表示,也可以用矩阵形式刻画,本文提出粗糙集理论中的相关概念的矩阵刻画,通过矩阵刻画粗糙集的上(下)近似、重要度等,并将其运用到模糊决策信息系统的属性约简算法中,研究表明这种方法是合理可行的,这为下一步建立高效的算法设计提供了基础.【相关文献】[1]PAWLAK Z.Rough sets[J].International Journal of Computer and Information Science,1982, 11:341-356.[2] 王国胤.Rough集理论与知识获取[M].西安:西安交通大学出版社,2001.WANG Guoyin.Rough set theory and knowledge acquisition[M].Xi′an:Xi′an Jiaotong Unive rsity Press,2001.[3] 苗夺谦,李道国.粗糙集理论、算法与应用[M].西安:西安交通大学出版社,2008:152-169. MIAO Duoqian,LI Daoguo.Rough set theory,algorithm and applications[M].Xi′an:Xi′an Jiao tong University Press,2008:152-169.[4] 苗夺谦,胡桂荣.知识约简的一种启发式算法[J].计算机研究与发展,1999,36(6):681-684. MIAO Duoqian,HU Gui-rong.A Heuristic algorithm of knowledge reduction[J].Computer Research and Developme nt,1999,36(6):681-684.[5] 叶东毅,陈昭炯.一个新的差别矩阵及其求核方法[J].电子学报,2002,30(7):1086-1088.YE Dongyi,CHEN Zhaojiong.A new difference matrix and method of computing core[J].Jou rnal of Electronics,2002,30(7):1086-1088.[6] 王艳盼,李涛.强协调决策形式背景的概念格属性约简[J].纺织高校基础科学学报,2013,26(3):351-354.WANG Yanpan,LI Tao.Attribute reduction theory of concept lattice based on strongly deci sion formal contexts[J].Basic Sciences Journal of Textile Universities,2013,26(3):351-355. [7] 万家良.一种新的面向对象概念格属性约简方法[J].纺织高校基础科学学报,2013,26(3):355-358.WANG Jialiang.A new method of attribute reduction in objected-oriented concept lattice[J].Basic Sciences Journal of Textile Universities,2013,26(3):355-358.[8] 范周田.模糊理论与应用[M].北京:科学出版社,2006::52-131.FAN Zhoutian.Fuzzy theory and applications[M].Beijing:Science Press,2006:52-131.[9] 阳琳赟,温明,卓晴,等.一种基于信息熵的模糊粗糙集知识获取方法[J].计算机工程与应用,2008,44(23):59-61;126.YANG Linyun,WEN Ming,ZHUO Qing,et al.A fuzzy rough set of knowledge acquisition met hod based on information entropy[J].Computer Engineering and Applications,2008,44(23): 59-61;126.[10] 刘清.Rough集及Rough推理[M].北京:科学出版社,2001:1-52.LIU Qing.Rough sets and rough reasoning[M].Beijing:Science Press,2001:1-52.[11] 张文修,吴伟志,梁吉业,等.粗糙集理论与方法[M].北京,科学出版社,2005:1-15.ZHANG Wenxiu,WU Weizhi,LIANG Jiye,et al.Rough sets theory and method[M].Beijing:Scie nce Press,2005:1-15.[12]TSANG E C C,CHEN D G,YEUNG D S.Attributes reduction using fuzzy rough sets[J].IEEE Tra nsactions on Fuzzy Systems,2008,16(5):1130-1141.[13]MI J S,LEUNGM Y,ZHAO H Y,et al.Generalized fuzzy rough sets determined by a triangular norm[J].Information Sciences,2008,178(16):3203-3213.[14] 于海,詹婉荣.概率模糊粗糙集模型[J].洛阳师范学院学报,2014,33(2):12-13.YU Hai,ZHAN Wanrong.Probabilistic fuzzy rough set model[J].Journal of Luoyang Normal University,2014,33(2):12-13.[15] ZHANG Zhiming.On interval type-2 rough fuzzy sets[J].Knowledge-Based Systems,2012,35:1-13.[16]YANG Hailong,LI Shenggang,WANG Shouyang,et al.Bipolar fuzzy rough set model on two different universes and its application[J].Knowledge-Based Systems,2012,35:94-101.。
MATLAB神经网络工具箱中的函数属性及其参数定义ppt课件
3.2 MATLAB神经网络工具箱中的网 络对象属性
4.权值和阈值属性 〔1〕IW属性:net.IW属性定义了从网络输入向量到网络层
的权值向量〔即输入层的权值向量〕构造。其值为 的细胞矩阵。 〔2〕LW属N 性R :net.LW定义了从一个网络层到另一个网络层 的权值向量构造。其值为 的细胞矩阵。 〔3〕b属性:net.b属性定义各网络层N 的 N阈值向量构造。其 值为 的细胞矩阵。
〔4〕initFcn属性:net.adaptFcn属性定义了网络初始化权值 /阈值向量所采用的函数其属性值为表示网络初始化函数 称号的字符串。包括层—层构造的初始化函数initlay,层 初始化函数initnw,initwb。
3.2 MATLAB神经网络工具箱中的网 络对象属性
3.参数属性 〔1〕adaptParam属性:net.adaptParam属性定义了网络当
i
〔2〕userdata属性:net.targets{i}.userdata,该属性为用户
提供了添加关于第 个网络层目的向量的用户信息的地方,
它预先只定义一个字段,i 其值为一提示信息
3.3 MATLAB神经网络工具箱中的网 络子对象属性
5.阈值向量 〔1〕initFcn属性:net.biases{i}.initFcn,该属性定义了第
否和目的向量有关,其值为
的布尔型向量〔0或1〕。
〔7〕outputConnect属性:net.outpu1tCoNnnect属性定义各网
络层能否作为输出层,其值为
的布尔型向量〔0或
1〕。
〔8〕targetConnect:该属性定义了神经1 网N络的目的层,即
网络哪些层的输出具有目的矢量。其属性值为
维的
属性约简方法概述
属性约简方法概述属性约简又称维规约或特征选择,从数学的角度考虑,就是有p维数据x=(x1,x2……xp),通过某种方法,得到新的数据x’=(x’1,x’2……x’k),k≤p,新的数据在某种评判标准下,最大限度地保留原始数据的特征。
属性约简主要是为了解决高维数据计算的复杂性和准确性问题。
目标是消除冗余和不相关属性对计算过程和最终结果造成的影响。
数据属性约简的意义主要从以下几个方面考虑:a)从机器学习的角度来看,通过属性约简去除噪音属性是非常有意义的;b)对一些学习算法来说,训练或分类时间随着数据维数的增加而增加,经过属性约简可以降低计算复杂度,减少计算时间;c)如果不进行属性约简,噪声或无关属性对分类的影响将与预期属性相同,这将对最终结果产生负面影响;d)当用较多的特征来描述数据时,数据均值表现得更加相似,难以区分。
为了描述属性约简方法,这里假设数据集合为d,d={x1,x2….xn},xi表示d中第i个实例,1≤i≤n,n为总的实例个数。
每个实例包含p个属性{|xi|=p}。
从机器学习的角度来看,属性约简方法可以分为监督的和非监督的两类。
下面是几种常用的方法。
(1)主成分分析主成分概念是karlparson于1901年最先引进。
1933年,hotelling把它推广到随机变量。
主成分分析把高维空间的问题转换到低维空间来处理,有效的降低了计算的复杂度。
通过主成分的提取,降低了部分冗余属性的影响,提高了计算的精度。
主成分分析的基本思想是通过正交变换将具有成分相关性的原始随机变量转换为具有成分不相关性的新变量。
从代数的角度,将原始变量的协方差矩阵变换为对角矩阵;从几何角度来看,将原始变量系统转换为一个新的正交系统,指向样本点分布最广的正交方向,然后降低多维变量系统的维数[43]。
定义4-1[44]:设x?(x1,x2,...,xp)'为p维随机向量,它的第i主成分分量可表示yi?ui'x,i=1,2,…,p。
MATLAB经典教程(全)PPT课件
2021/7/24
8
Matlab 的特点与功能
Matlab 丰富的工具箱(toolbox)
根据专门领域中的特殊需要而设计的各种可选工具箱
Symbolic Math Signal process Control System
PDE
Image Process System Identification
Matlab 具有很强的数值计算功能
Matlab 以矩阵作为数据操作的基本单位, 但无需预先指定矩阵维数(动态定维)
按照 IEEE 的数值计算标准进行计算 提供十分丰富的数值计算函数,方便计算,提高效率 Matlab 命令与数学中的符号、公式非常接近,
可读性强,容易掌握
2021/7/24
7
例:
>> :命令提示符,不用输入 回车 :运行所输入的命令
2021/7/24
12
矩阵元素赋值
矩阵元素可以是任何数值表达式
例:>> x=[-1.3, sqrt(3), (1+2+3)*4/5]
矩阵元素的单独赋值
例:>> x(5)=abs(x(1))
Matlab自动将向量 x 的长度扩展到 5,
增添图形图像处理、符号运算、以及与其他流行软件 的接口功能,使得 Matlab 的功能越来越强大。
到九十年代,在国际上 30 几个数学类科技应用软件中,
Matlab 在数值计算方面独占鳌头。
2021/7/24
4
Matlab 简介
目前,Matlab 已成为世界顶尖的数学应用软件,以其强大
的工程计算、算法研究、工程绘图、应用程序开发、数据分
并将未赋值部分置零。
例:>> x(5)=abs(x(6)) ??
Matlab教程(详解).
Matlab用法简介绪论Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”,是当今美国很流行的科学计算软件.信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用.在许多诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其相应的计算问题.自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高.美国Mathwork软件公司推出的Matlab软件就是为了给人们提供一个方便的数值计算平台而设计的.Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算.系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高.Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作.除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network工具箱等.第一节Matlab的安装及使用§1.1 Matlab的安装Matlab有各种版本,早期有Matlab1.0 for 386的DOS版本,后来逐步发展.这里介绍的版本是Matlab 6.x for Windows.因为它使用方便,界面美观,我们选择它作为主要讲解版本.Matlab还有许多附加的部分,最常见的部分称为Simulink,是一个用作系统仿真的软件包,它可以让您定义各种部件,定义各自对某种信号的反应方式及与其它部件的连接方式.最后选择输入信号,系统会仿真运行整个模拟系统,并给出统计数据.Simulink有时是作为Matlab的一部分提供的,称为Matlab with Simulink版本.Matlab 还有许多工具箱,它们是根据各个特殊领域的需要,用Matlab自身的语言编写的程序集,使用起来非常方便.您可以视工作性质和需要购买相应的工具箱.常见的工具箱有:§1.2 Matlab基本用法从Windows中双击Matlab图标,会出现Matlab命令窗口(Command Window),在一段提示信息后,出现系统提示符“>>”.Matlab是一个交互系统,您可以在提示符后键入各种命令,通过上下箭头可以调出以前打入的命令,用滚动条可以查看以前的命令及其输出信息.如果对一条命令的用法有疑问的话,可以用Help菜单中的相应选项查询有关信息,也可以用help命令在命令行上查询,您可以试一下help、help help和help eig(求特征值的函数)命令.下面我们先从输入简单的矩阵开始掌握Matlab的功能.§1.2.1输入简单的矩阵输入一个小矩阵的最简单方法是用直接排列的形式.矩阵用方括号括起,元素之间用空格或逗号分隔,矩阵行与行之间用分号分开.例如输入:A=[1 2 3 ; 4 5 6 ; 7 8 0]系统会回答A =1 2 34 5 67 8 0表示系统已经接收并处理了命令,在当前工作区内建立了矩阵A.大的矩阵可以分行输入,用回车键代替分号,如:A=[ 1 2 34 5 67 8 0 ]结果和上式一样,也是A =1 2 34 5 67 8 0§1.2.2矩阵元素Matlab的矩阵元素可以是任何数值表达式.如:x=[ -1.3 sqrt(3) (1+2+3)*4/5]结果:x =-1.3000 1.7321 4.8000在括号中加注下标,可取出单独的矩阵元素.如:x(5)=abs(x(1))结果x =-1.3000 1.7321 4.8000 0 1.3000注:结果中自动产生了向量的第5个元素,中间未定义的元素自动初始为零.大的矩阵可把小的矩阵作为其元素来完成,如:A=[A; [10 11 12]]结果A =1 2 34 5 67 8 010 11 12小矩阵可用“:”从大矩阵中抽取出来,如:A=A(1:3,:);即从A中取前三行和所有的列,重新组成原来的A. (详细介绍参见第二节的相关内容)§1.2.3语句和变量Matlab的表述语句、变量的类型说明由Matlab系统解释和判断.Matlab语句通常形式为:变量=表达式或者使用其简单形式为:表达式表达式由操作符或其它特殊字符、函数和变量名组成.表达式的结果为一个矩阵,显示在屏幕上,同时保存在变量中以留用.如果变量名和“=”省略,则具有ans名(意思指回答)的变量将自动建立.例如:键入1900/81结果为:ans =23.4568需注意的问题有以下几点:●语句结束键入回车键,若语句的最后一个字符是分号,即“;”,则表明不输出当前命令的结果.●如果表达式很长,一行放不下,可以键入“…”(三个点,但前面必须有个空格,目的是避免将形如“数2 …”理解为“数2.”与“..”的连接,从而导致错误),然后回车.●变量和函数名由字母加数字组成,但最多不能超过63个字符,否则系统只承认前63个字符.●Matlab变量字母区分大小写,如A和a不是同一个变量,函数名一般使用小写字母,如inv(A)不能写成INV(A),否则系统认为未定义函数.§1.2.4 who和系统预定义变量输入who命令可检查工作空间中建立的变量,键入:who系统输出为:Your variables are:A ans x这里表明三个变量已由前面的例子产生了.但列表中列出的并不是系统全部的变量,系统还有以下内部变量:eps、pi、Inf、NaN变量eps在决定诸如矩阵的奇异性时,可作为一个容许差,容许差的初值为1.0到1.0以后计算机所能表示的下一个最大浮点数,IEEE在各种计算机、工作站和个人计算机上使用这个算法.用户可将此值置为任何其它值(包括0值).Matlab的内部函数pinc和rank以eps为缺省的容许差.变量pi是 ,它是用imag(log(-1))建立的.Inf表示无穷大.如果您想计算1/0S=1/0结果会是Warning:Divide by zeroS=Inf具有IEEE规则的机器,被零除后,并不引出出错条件或终止程序的运行,而产生一个警告信息和一个特殊值在计算方程中列出来.变量NaN表示它是个不定值.由Inf/Inf或0/0运算产生.要了解当前变量的信息请键入whos,屏幕将显示:Name Size Bytes ClassA 4x3 96 double arrayS 1x1 8 double arrayans 1x1 8 double arrayx 1x5 40 double arrayGrand total is 19 elements using 152 bytes从size及bytes项目可以看出,每一个矩阵实元素需8个字节的内存.4×3的矩阵使用96个字节,全部变量的使用内存总数为152个字节.自由空间的大小决定了系统变量的多少,如计算机上有虚拟内存的话,其可定义的变量个数会大大增加.§1.2.5数和算术表达式Matlab中数的表示方法和一般的编程语言没有区别.如:3 -99 0.00019.63972 1.6021E-20 6.02252e23在计算中使用IEEE浮点算法其舍入误差是eps.浮点数表示范围是10-308~10308.数学运算符有:+ 加- 减* 乘/ 右除\ 左除^ 幂这里1/4和4\1有相同的值都等于0.25(注意比较:1\4=4).只有在矩阵的除法时左除和右除才有区别.§1.2.6复数与矩阵在Matlab中输入复数首先应该建立复数单位:i=sqrt(-1)及j=sqrt(-1)之后复数可由下面语句给出:Z=3+4i (注意:在4与i之间不要留有任何空间!)输入复数矩阵有两个方便的方法,如:A=[1 2; 3 4] + i*[5 6; 7 8]和 A=[1+5i 2+6i; 3+7i 4+8i]两式具有相等的结果.但当复数作为矩阵的元素输入时,不要留有任何空间,如1+5i,如在“+”号左右留有空格,就会被认为是两个分开的数.不过实际使用复数时并没有这么麻烦,系统有一个名为startup.m的Matlab命令文件,建立复数单位的语句也放在其中.当Matlab启动时,此文件自动执行,i和j将自动建立.§1.2.7输出格式任何Matlab语句执行结果都可在屏幕上显示,同时赋给指定的变量,没有指定变量时赋给ans.数字显示格式可由format命令来控制(Windows系统下的Matlab系统的数字显示格式可以由Option菜单中的Numerical Format菜单改变).format仅影响矩阵的显示,不影响矩阵的计算与存贮.(Matlab以双精度执行所有的运算)首先,如果矩阵元素是整数则矩阵显示就没有小数,如x=[-1 0 1],结果为:x=-1 0 1如果矩阵元素不是整数则输出形式有:(用命令:format 格式进行切换)例如:x=[4/3 1.2345e-6]在不同的输出格式下的结果为:短格式 1.3333 0.0000短格式e方式 1.3333e+000 1.234e-006长格式 1.333333333333333 0.000001234500000长格式e方式 1.333333333333333e-000 1.23450000000000e-006有理数格式4/3 1/81004516进制格式3ff5555555555555 3eb4b6231abfd271+格式+ +对于短格式,如果矩阵的最大元素比数999999999大,或者比数0.0001小,则在打印时,将加入一个普通的长度因数.如y=1.e20*x,意为x被1020乘,结果为:y=1.0e+020*1.3333 0.0000“+”格式是显示大矩阵的一种紧凑方法,“+”,“-”和空格显示正数、负数和零元素.最后format compact命令压缩显示的矩阵,以允许更多的信息显示在屏幕上.§1.2.8 Help求助命令和联机帮助Help求助命令很有用,它对Matlab大部分命令提供了联机求助信息.您可以从Help菜单中选择相应的菜单,打开求助信息窗口查询某条命令,也可以直接用help命令.键入help得到help列表文件,键入“help 指定项目”,如:键入help eig则提供特征值函数的使用信息.键入help [显示如何使用方括号等.键入help help显示如何利用help本身的功能.还有,键入lookfor <关键字>:可以从m文件的help中查找有关的关键字.§1.2.9 退出和存入工作空间退出Matlab可键入quit或exit或选择相应的菜单.中止Matlab运行会引起工作空间中变量的丢失,因此在退出前,应键入save命令,保存工作空间中的变量以便以后使用.键入 save则将所有变量作为文件存入磁盘Matlab.mat中,下次Matlab启动时,键入load将变量从Matlab.mat中重新调出.save和load后边可以跟文件名或指定的变量名,如仅有save时,则只能存入Matlab.mat中.如save temp命令,则将当前系统中的变量存入temp.mat中去,命令格式为:save temp x 仅仅存入x变量.save temp X Y Z 则存入X、Y、Z变量.load temp可重新从temp.mat文件中提出变量,load也可读ASCII数据文件.详细语法见联机帮助.第二节向量与矩阵运算Matlab能处理数、向量和矩阵.但一个数事实上是一个1×1的矩阵,1个n维向量也不过是一个1×n或n×1的矩阵.从这个角度上来讲,Matlab处理的所有的数据都是矩阵.Matlab的矩阵处理能力是非常灵活、强大的.以下我们将从矩阵的产生、基本运算、矩阵函数等几个方面来说明.§2.1向量及矩阵的生成除了我们在上节介绍的直接列出矩阵元素的输入方法,矩阵还可以通过几种不同的方式输入到Matlab 中.§2.1.1 通过语句和函数产生1. 向量的产生除了直接列出向量元素(即所谓的“穷举法”)外,最常用的用来产生相同增量的向量的方法是利用“:”算符(即所谓的“描述法”).在Matlab中,它是一个很重要的字符.如:z=1:5z =1 2 3 4 5即产生一个1~5的单位增量是1的行向量,此为默认情况.用“:”号也可以产生单位增量不等于1的行向量,语法是把增量放在起始量和结尾量的中间.如:x=0:pi/4:pi即产生一个由0~pi的行向量,单位增量是pi/4=3.1416/4=0.7854.x =0 0.7854 1.5708 2.3562 3.1416也可以产生单位增量为负数的行向量.如:y=6:-1:1y =6 5 4 3 2 12. 矩阵的产生Matlab提供了一批产生矩阵的函数:例如:ones(3)ans =1 1 11 1 11 1 1eye(3)ans =1 0 00 1 00 0 1除了以上产生标准矩阵的函数外,Matlab还提供了产生随机(向量)矩阵的函数rand和randn,及产生均匀级数的函数linspace、产生对数级数的函数logspace和产生网格的函数meshgrid等等.详细使用请查阅随机文档.“ : ”冒号可以用来产生简易的表格,为了产生纵向表格形式,首先用冒号“ : ”产生行向量,再进行转置,计算函数值的列,然后形成有二列的矩阵.例如命令:x=(0.0:0.2:3.0)';y=exp(-x).*sin(x);[x y]产生结果为:ans =0 00.2000 0.16270.4000 0.26100.6000 0.30990.8000 0.32231.0000 0.30961.2000 0.28071.4000 0.24301.6000 0.20181.8000 0.16102.0000 0.12312.2000 0.08962.4000 0.06132.6000 0.03832.8000 0.02043.0000 0.0070§2.1.2 通过后缀为.m的命令文件产生如有文件data.m,其中包括正文:A=[ 1 2 34 5 67 8 0]则用data命令执行data.m,可以产生名为A的矩阵.§2.2 矩阵操作在Matlab中可以对矩阵进行任意操作,包括改变它的形式,取出子矩阵,扩充矩阵,旋转矩阵等.其中最重要的操作符为“:”,它的作用是取出选定的行与列.例如:A(:,:) 代表A的所有元素;试比较A(:), 将A按列的方向拉成长长的1列(向量);A(:,J) 代表A的第J列;A(J:K) 代表 A(J), A(J+1), …, A(K),如同A(:)的第J到第K个元素;A(:,J:K) 代表A(:,J), A(:,J+1), …, A(:,K),如此类推.对矩阵可以进行各种各样的旋转、变形、扩充:Matlab中有内部函数fliplr ( Flip matrix in the left/right direction),它对矩阵进行左右旋转.例 x = 1 2 3 fliplr(x)为 3 2 14 5 6 6 5 4同样有flipud:x = 1 4 flipud(x)为 3 62 5 2 53 6 1 4矩阵的转置用符号“ ' ”表示:如A=[1 2 3; 4 5 6 ; 7 8 0]那么:计算B=A'B =1 4 72 5 83 6 0符号“ ' ”为矩阵的转置,如果Z为复矩阵,则Z'为它的复数共轭转置,非共轭转置使用Z.' 或conj(Z')求得.reshape改变矩阵的形状,这是什么意思呢?可举一个例子来说明.A=[A;[10 11 12]]A =1 2 34 5 67 8 010 11 12则 reshape(A,2,6)ans =1 72 83 04 105 116 12可见,reshape 是将矩阵元素以列为单位进行重组,原来4×3的矩阵变为了2×6的矩阵.那么以下的语句也不难理解了,它将矩阵A按列打开(size函数返回矩阵A的行数与列数).reshape(A,1,size(A,1)*size(A,2)),它等价于A(:)' .还有函数rot90,它可以将矩阵进行各种90度的旋转;tril 及triu 取出矩阵的下三角及上三角阵等.详细的用法可以在需要使用时查阅手册.第三节 矩阵的基本运算§3.1 加和减如矩阵A 和B 的维数相同,则A+B 与A-B 表示矩阵A 与B 的和与差.如果矩阵A 和B 的维数不匹配,Matlab 会给出相应的错误提示信息.如:A=B= 1 2 3 1 4 7 4 5 6 2 5 8 7 836C =A+B 返回:C =2 6 10 6 10 14 10 14 0如果运算对象是个标量(即1×1矩阵),可和其它矩阵进行加减运算.例如: x=-1 y=x-1= -2 0 -1 21§3.2矩阵乘法Matlab 中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker 乘法,以下分别介绍. §3.2.1 矩阵的普通乘法矩阵乘法用“ * ”符号表示,当A 矩阵列数与B 矩阵的行数相等时,二者可以进行乘法运算,否则是错误的.计算方法和线性代数中所介绍的完全相同.如:A=[1 2 ; 3 4]; B=[5 6 ; 7 8]; C=A*B , 结果为 C=⎪⎪⎭⎫⎝⎛4321×⎪⎪⎭⎫ ⎝⎛8765=⎪⎪⎭⎫ ⎝⎛⨯+⨯⨯+⨯⨯+⨯⨯+⨯8463745382617251=⎪⎪⎭⎫ ⎝⎛50432219 即Matlab 返回: C =19 22 43 50如果A 或B 是标量,则A*B 返回标量A (或B )乘上矩阵B (或A )的每一个元素所得的矩阵. §3.2.2 矩阵的Kronecker 乘法对n ×m 阶矩阵A 和p ×q 阶矩阵B ,A 和B 的Kronecher 乘法运算可定义为:⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⊗=B a B a B a B a B a B a B a B a B a B A C nm n n m m (21)2222111211由上面的式子可以看出,Kronecker 乘积A ⊗B 表示矩阵A 的所有元素与B 之间的乘积组合而成的较大的矩阵,B ⊗A 则完全类似.A ⊗B 和B ⊗A 均为np ×mq 矩阵,但一般情况下A ⊗B ≠B ⊗A .和普通矩阵的乘法不同,Kronecker 乘法并不要求两个被乘矩阵满足任何维数匹配方面的要求.Kronecker 乘法的Matlab 命令为C=kron(A,B),例如给定两个矩阵A 和B :A =1234⎛⎝⎫⎭⎪ B=132246⎛⎝⎫⎭⎪则由以下命令可以求出A 和B 的Kronecker 乘积C :A=[1 2; 3 4]; B=[1 3 2; 2 4 6]; C=kron(A,B) C =1 32 2 6 4 2 4 6 4 8 123 9 64 12 8 6 12 18 8 16 24作为比较,可以计算B 和A 的Kronecker 乘积D ,可以看出C 、D 是不同的: A=[1 2; 3 4]; B=[1 3 2; 2 4 6]; D=kron(B,A) D =1 2 3 6 2 4 3 4 9 12 6 8 2 4 4 8 6 12 6 8 12 16 18 24§3.3 矩阵除法在Matlab 中有两种矩阵除法符号:“\”即左除和“/”即右除.如果A 矩阵是非奇异方阵,则A\B 是A 的逆矩阵乘B ,即inv(A)*B ;而B/A 是B 乘A 的逆矩阵,即B*inv(A).具体计算时可不用逆矩阵而直接计算.通常:x=A\B 就是A*x=B 的解; x=B/A 就是x*A=B 的解.当B 与A 矩阵行数相等可进行左除.如果A 是方阵,用高斯消元法分解因数.解方程:A*x(:, j)=B(:, j),式中的(:, j)表示B 矩阵的第j 列,返回的结果x 具有与B 矩阵相同的阶数,如果A 是奇异矩阵将给出警告信息.如果A 矩阵不是方阵,可由以列为基准的Householder 正交分解法分解,这种分解法可以解决在最小二乘法中的欠定方程或超定方程,结果是m ×n 的x 矩阵.m 是A 矩阵的列数,n 是B 矩阵的列数.每个矩阵的列向量最多有k 个非零元素,k 是A 的有效秩.右除B/A 可由B/A=(A'\B')'左除来实现.§3.4矩阵乘方A^P意思是A的P次方.如果A是一个方阵,P是一个大于1的整数,则A^P表示A的P次幂,即A自乘P次.如果P不是整数,计算涉及到特征值和特征向量的问题,如已经求得:[V,D]=eig(A),则:A^P=V*D.^P/V(注:这里的.^表示数组乘方,或点乘方,参见后面的有关介绍)如果B是方阵, a是标量,a^B就是一个按特征值与特征向量的升幂排列的B次方程阵.如果a和B 都是矩阵,则a^B是错误的.§3.5 矩阵的超越函数在Matlab中解释exp(A)和sqrt(A)时曾涉及到级数运算,此运算定义在A的单个元素上.Matlab可以计算矩阵的超越函数,如矩阵指数、矩阵对数等.一个超越函数可以作为矩阵函数来解释,例如将“m”加在函数名的后边而成expm(A)和sqrtm(A),当Matlab运行时,有下列三种函数定义:expm 矩阵指数logm 矩阵对数sqrtm 矩阵开方所列各项可以加在多种m文件中或使用funm.请见应用库中sqrtm.m,1ogm.m,funm.m文件和命令手册.§3.6数组运算数组运算由线性代数的矩阵运算符“*”、“/”、“\”、“^”前加一点来表示,即为“.*”、“./”、“.\”、“.^”.注意没有“.+”、“.-”运算.§3.6.1数组的加和减对于数组的加和减运算与矩阵运算相同,所以“+”、“-”既可被矩阵接受又可被数组接受.§3.6.2数组的乘和除数组的乘用符号.*表示,如果A与B矩阵具有相同阶数,则A.*B表示A和B单个元素之间的对应相乘.例如 x=[1 2 3]; y=[ 4 5 6];计算z=x.*y结果z=4 10 18数组的左除(.\)与数组的右除(./),由读者自行举例加以体会.§3.6.3 数组乘方数组乘方用符号.^表示.例如:键入:x=[ 1 2 3]y=[ 4 5 6]则z=x.^y=[1^4 2^5 3^6]=[1 32 729](1) 如指数是个标量,例如x.^2,x同上,则:z=x.^2=[1^2 2^2 3^2]=[ 1 4 9](2) 如底是标量,例如2 .^[x y] ,x、y同上,则:z=2 .^[x y]=[2^1 2^2 2^3 2^4 2^5 2^6]=[2 4 8 16 32 64]从此例可以看出Matlab算法的微妙特性,虽然看上去与其它乘方没什么不同,但在2和“.”之间的空格很重要,如果不这样做,解释程序会把“.”看成是2的小数点.Matlab看到符号“^”时,就会当做矩阵的幂来运算,这种情况就会出错,因为指数矩阵不是方阵.§3.7 矩阵函数Matlab的数学能力大部分是从它的矩阵函数派生出来的,其中一部分装入Matlab本身处理中,它从外部的Matlab建立的M文件库中得到,还有一些由个别的用户为其自己的特殊的用途加进去的.其它功能函数在求助程序或命令手册中都可找到.手册中备有为Matlab提供数学基础的LINPACK和EISPACK软件包,提供了下面四种情况的分解函数或变换函数:(1)三角分解;(2)正交变换;(3) 特征值变换;(4)奇异值分解.§3.7.1三角分解最基本的分解为“LU”分解,矩阵分解为两个基本三角矩阵形成的方阵,三角矩阵有上三角矩阵和下三角矩阵.计算算法用高斯变量消去法.从lu函数中可以得到分解出的上三角与下三角矩阵,函数inv得到矩阵的逆矩阵,det得到矩阵的行列式.解线性方程组的结果由方阵的“\”和“/”矩阵除法来得到.例如:A=[ 1 2 34 5 67 8 0]LU分解,用Matlab的多重赋值语句[L,U]=lu(A)得出L =U =注:L是下三角矩阵的置换,U是上三角矩阵的正交变换,分解作如下运算,检测计算结果只需计算L*U即可.求逆由下式给出: x=inv(A)x =从LU分解得到的行列式的值是精确的,d=det(U)*det(L)的值可由下式给出:d=det(A)d =27直接由三角分解计算行列式:d=det(L)*det(U)d =27.0000为什么两种d的显示格式不一样呢? 当Matlab做det(A)运算时,所有A的元素都是整数,所以结果为整数.但是用LU分解计算d时,L、U的元素是实数,所以Matlab产生的d也是实数.例如:线性联立方程取 b=[ 135]解Ax=b方程,用Matlab矩阵除得到x=A\b结果x=0.33330.33330.0000由于A=L*U,所以x也可以有以下两个式子计算:y=L\b,x=U\y.得到相同的x值,中间值y为:y =5.00000.28570.0000Matlab中与此相关的函数还有rcond、chol和rref.其基本算法与LU分解密切相关.chol函数对正定矩阵进行Cholesky分解,产生一个上三角矩阵,以使R'*R=X.rref用具有部分主元的高斯-约当消去法产生矩阵A的化简梯形形式.虽然计算量很少,但它是很有趣的理论线性代数.为了教学的要求,也包括在Matlab中.§3.7.2正交变换“QR”分解用于矩阵的正交-三角分解.它将矩阵分解为实正交矩阵或复酉矩阵与上三角矩阵的积,对方阵和长方阵都很有用.例如A=[ 1 2 34 5 67 8 910 11 12]是一个降秩矩阵,中间列是其它二列的平均,我们对它进行QR分解:[Q,R]=qr(A)Q =R =可以验证Q*R就是原来的A矩阵.由R的下三角都给出0,并且R(3,3)=0.0000,说明矩阵R与原来矩阵A都不是满秩的.下面尝试利用QR分解来求超定和降秩的线性方程组的解.例如:b=[ 1357]讨论线性方程组Ax=b,我们可以知道方程组是超定的,采用最小二乘法的最好结果是计算x=A\b.结果为:Warning: Rank deficient, rank = 2 tol = 1.4594e-014x =0.50000.1667我们得到了缺秩的警告.用QR分解法计算此方程组分二个步骤:y=Q'*bx=R\y求出的y值为y =x的结果为Warning: Rank deficient, rank = 2 tol = 1.4594e-014x =0.50000.1667用A*x来验证计算结果,我们会发现在允许的误差范围内结果等于b.这告诉我们虽然联立方程Ax=b 是超定和降秩的,但两种求解方法的结果是一致的.显然x向量的解有无穷多个,而“QR”分解仅仅找出了其中之一.§3.7.3奇异值分解在Matlab中三重赋值语句[U,S,V]=svd(A)在奇异值分解中产生三个因数:A=U*S*V 'U矩阵和V矩阵是正交矩阵,S矩阵是对角矩阵,svd(A)函数恰好返回S的对角元素,而且就是A的奇异值(其定义为:矩阵A'*A的特征值的算术平方根).注意到A矩阵可以不是方的矩阵.奇异值分解可被其它几种函数使用,包括广义逆矩阵pinv(A)、秩rank(A)、欧几里德矩阵范数norm(A,2)和条件数cond(A).§3.7.4 特征值分解如果A是n×n矩阵,若λ满足Ax=λx,则称λ为A的特征值,x为相应的特征向量.函数eig(A)返回特征值列向量,如果A是实对称的,特征值为实数.特征值也可能为复数,例如:A=[ 0 1-1 0]eig(A)产生结果ans =0 + 1.0000i0 - 1.0000i如果还要求求出特征向量,则可以用eig(A)函数的第二个返回值得到:[x,D]=eig(A)D的对角元素是特征值.x的列是相应的特征向量,以使A*x=x*D.计算特征值的中间结果有两种形式:Hessenberg形式为hess(A),Schur形式为schur(A).schur形式用来计算矩阵的超越函数,诸如sqrtm(A)和logm(A).如果A和B是方阵,函数eig(A,B)返回一个包含一般特征值的向量来解方程Ax= Bx双赋值获得特征向量[X,D]=eig(A,B)产生特征值为对角矩阵D.满秩矩阵X的列相应于特征向量,使A*X=B*X*D,中间结果由qz(A,B)提供.§3.7.5秩Matlab计算矩阵A的秩的函数为rank(A),与秩的计算相关的函数还有:rref(A)、orth(A)、null(A)和广义逆矩阵pinv(A)等.利用rref(A),A的秩为非0行的个数.rref方法是几个定秩算法中最快的一个,但结果上并不可靠和完善.pinv(A)是基于奇异值的算法.该算法消耗时间多,但比较可靠.其它函数的详细用法可利用Help 求助.第四节Matlab中的图形§4.1 二维作图绘图命令plot绘制x-y坐标图;loglog命令绘制对数坐标图;semilogx和semilogy命令绘制半对数坐标图;polor命令绘制极坐标图.§4.1.1 基本形式如果y是一个向量,那么plot(y)绘制一个y中元素的线性图.假设我们希望画出y=[0., 0.48, 0.84, 1., 0.91, 6.14 ]则用命令:plot(y)它相当于命令:plot(x, y),其中x=[1,2,…,n]或x=[1;2;…;n],即向量y的下标编号, n为向量y 的长度Matlab会产生一个图形窗口,显示如下图形,请注意:坐标x和y 是由计算机自动绘出的.图4.1.1.1 plot([0.,0.48,0.84,1.,0.91,6.14])上面的图形没有加上x轴和y轴的标注,也没有标题.用xlabel,ylabel,title命令可以加上.如果x,y是同样长度的向量,plot(x,y)命令可画出相应的x元素与y元素的x-y坐标图.例:x=0:0.05:4*pi; y=sin(x); plot(x,y)grid on, title(' y=sin( x ) 曲线图' )xlabel(' x = 0 : 0.05 : 4Pi ')结果见下图.图4.1.1.2 y=sin(x)的图形表4.1.1.1 Matlab图形命令§4.1.2 多重线在一个单线图上,绘制多重线有三种办法.第一种方法是利用plot的多变量方式绘制:plot(x1,y1,x2,y2,...,xn,yn)x1,y1,x2,y2,...,xn,yn是成对的向量,每一对x, y在图上产生如上方式的单线.多变量方式绘图是允许不同长度的向量显示在同一图形上.第二种方法也是利用plot绘制,但加上hold on/off命令的配合:plot(x1,y1)hold onplot(x2,y2)hold off第三种方法还是利用plot绘制,但代入矩阵:如果plot用于两个变量plot(x,y),并且x,y是矩阵,则有以下情况:(1)如果y是矩阵,x是向量,plot(x,y)用不同的画线形式绘出y的行或列及相应的x向量,y的行或列的方向与x向量元素的值选择是相同的.(2)如果x是矩阵,y是向量,则除了x向量的线族及相应的y向量外,以上的规则也适用.(3)如果x,y是同样大小的矩阵,plot(x,y)绘制x的列及y相应的列.还有其它一些情况,请参见Matlab的帮助系统.§4.1.3 线型和颜色的控制如果不指定划线方式和颜色,Matlab会自动为您选择点的表示方式及颜色.您也可以用不同的符号指定不同的曲线绘制方式.例如:plot(x,y,'*') 用'*'作为点绘制的图形.plot(x1,y1,':',x2,y2,'+') 用':'画第一条线,用'+'画第二条线.线型、点标记和颜色的取值有以下几种:表4.1.3.1线型和颜色控制符如果你的计算机系统不支持彩色显示,Matlab将把颜色符号解释为线型符号,用不同的线型表示不同的颜色.颜色与线型也可以一起给出,即同时指定曲线的颜色和线型.例如:t=-3.14:0.2:3.14;x=sin(t); y=cos(t);plot(t,x, '+r',t,y, '-b')图4.1.3.1不同线型、颜色的sin,cos图形§4.1.4对数图、极坐标图及条形图loglog、semilogx、semilogy和polar的用法和plot相似.这些命令允许数据在不同的graph paper 上绘制,例如不同的坐标系统.先介绍的fplot是扩展来的可用于符号作图的函数.●fplot(fname,lims) 绘制fname指定的函数的图形.●polar( theta, rho) 使用相角theta 为极坐标形式绘图,相应半径为rho,其次可使用grid命令画出极坐标网格.●loglog 用log10-log10标度绘图.●semilogx 用半对数坐标绘图,x轴是log10,y是线性的.●semilogy 用半对数坐标绘图,y轴是log10,x是线性的.●bar(x) 显示x向量元素的条形图,bar不接受多变量.●hist 绘制统计频率直方图.●histfit(data,nbins) 绘制统计直方图与其正态分布拟合曲线.fplot函数的绘制区域为lims=[xmin,xmax],也可以用lims=[xmin,xmax,ymin,ymax]指定y轴的区域.函数表达式可以是一个函数名,如sin,tan等;也可以是带上参数x的函数表达式,如sin(x),diric(x,10);也可以是一个用方括号括起的函数组,如[sin, cos].例1:fplot('sin',[0 4*pi])例2:fplot('sin(1 ./ x)', [0.01 0.1])例3:fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi],'-o')例4:fplot('[sin(x), cos(x) , tan(x)]',[-2*pi 2*pi -2*pi 2*pi]) %%(图4.1.4.1)图4.1.4.1 sin,cos,tan函数图形图4.1.4.2半对数图。
MATLAB 2016基础实例教程 第1章 MATLAB入门
《MATLAB 2016 基础实例教程》
1.1.3 MATLAB的特点
MATLAB的一个重要特色是它具有一系列称为工具箱(Toolbox) 的特殊应用子程序。工具箱是MATLAB函数的子程序库,可以分为 功能性工具箱和学科性工具箱。
所有MATLAB核心文件和各种工具箱文件都是可读可修改的源文件, 用户可通过对源程序进行修改或加入自己编写的程序来构造新的专 用工具箱。
《MATLAB 2016 基础实例教程》
1.1.1 MATLAB的发展历程
20 世 纪 70 年 代 中 期 , Cleve Moler 博 士 及 其 同 事 开 发 了 调 用 EISPACK和LINPACK的FORTRAN子程序库。
70 年 代 后 期 ,Cleve Moler 教 授 设 计 了 一 组 调 用 LINPACK 和 EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的 萌芽状态的MATLAB。
《MATLAB 2016 基础实例教程》
1.3.1 基本符号
下面介绍几种常见的命令输入过程中常见的错误及显示的警告与错误 信息。
(1)输入的括号为中文格式
(2)函数使用格式错误
(3)缺少步骤,未定义变量
(4)正确格式
《MATLAB 2016 基础实例教程》
1.3.2 功能符号
除了命令输入必须的符号外,MATLAB为了解决命令输入过于繁琐、 复杂的问题,采取了分号、续行符及插入变量等方法。
《MATLAB 2016 基础实例教程》
1.2.2 功能区
MATLAB 2016将所有的功能命令分类别放置在三个选项卡中,下面 分别介绍这3个选项卡。 “主页”选项卡:单击标题栏下方的“主页”选项卡,显示基本 的“新建脚本”“新建变量”等命令。
粗糙集属性约简matlab程序
粗糙集属性约简m a t l a b程序标准化管理部编码-[99968T-6889628-J68568-1689N]粗糙集-属性约简-m a t l a b程序Data2为条件属性,decision2为决策属性%%%my_test函数实现clc;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取信息系统文件file=textread('data2.txt','%s','delimiter','\n','whitespace','');%读取文件信息,每一行为一个胞元[m,n]=size(file);%胞元的大小fori=1:mwords=strread(file{i},'%s','delimiter','');%读取每个胞元中字符,即分解胞元为新的胞元words=words';%转置X{i}=words;endX=X'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[B,num,AT]=my_reduct(X);%信息系统的约简ind_AT=ind(X);%信息系统的不可等价关系%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%显示约简信息系统disp('约简后的条件系统为:');[m,n]=size(B);fori=1:mdisp(B{i});end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取决策系统文件file=textread('decision2.txt','%s','delimiter','\n','whitespace','');[m,n]=size(file);fori=1:mwords=strread(file{i},'%s','delimiter','');words=words';D{i}=words;endD=D'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%决策系统的正域约简X_D=X;[l,k]=size(X_D{1});pos_d=pos(X_D,D);%正域fori=1:m%%%%%%%%%%%%%%正域有问题%%%%%%%%%%%%%%%%%%%%%%%%%%%if(~ismember(num(i),pos_d))B{i}='';%若约简后的信息系统B{i}不在正域中则删除该行end%因为相同的条件得到的决策不一样,end%将在正域规则下约简过的信息系统B连接决策系统Dfori=1:mif(~isequal(B{i},''))B{i}{1,k+1}=D{i}{1};endend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%显示约简决策系统disp('约简后的决策系统为:');[m,n]=size(B);fori=1:mdisp(B{i});end--------------------------------------------------------------------------------%%%%%my_reduct函数实现function[C,num,reduct_attr]=my_reduct(X)%%%%%y为约简后的cell数组,reduct_attr为可约去的属性%X为行向量(元素为胞元)clc; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%约简[m,n]=size(X);[p,k]=size(X{1});ind_AT=ind(X);%寻找不可等价关系reduct_attr=[];%可约去的的属性num=zeros(m,1);%约简后的信息对应的个体fori=1:kB=delete_AT(X,i);if(isequal(ind_AT,ind(B)))%若IND(AT-{a}=IND(AT)reduct_attr=union(reduct_attr,i);%则寻找到可约去的属性X=B;endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%剔除重复的行k=1;fori=1:mif(~isequal(ind_AT{i},[]))C_i=ind_AT{i,1}(1);num(k)=i;C{k,1}=X{C_i};%返回约简后的信息系统k=k+1;endend--------------------------------------------------------------------------------%%%%%ind函数实现functionyy=ind(X)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%寻找不可分辨关系k=1;ind_AT=cell(m,1);fori=1:mforj=(i+1):m%潜在问题,如i=m是终止循环,此时若最后一行不为空的话,将漏扫if(~isequal(X{i},''))%若X{i}不为空ind_AT{k}=union(ind_AT{k},i);%不可等价关系赋初值if(isequal(X{i},X{j}))X{j}='';%若X{i}==X{j},则删除X{j}ind_AT{k}=union(ind_AT{k},j);%寻找不可等价关系endendendk=k+1;end--------------------------------------------------------------------------------%%%delete_AT函数的源代码functiony=delete_AT(X,ATi)%删除X中第i列的属性值[m,n]=size(X);[l,k]=size(X{1});fori=1:mX{i}{ATi}='';endy=X;--------------------------------------------------------------------------------%%%%%pos函数实现functionpos_d=pos(X,D)%求决策系统的正域函数%X为条件属性,D为决策属性ind_D=ind(D);%求决策属性D的不可等价关系[m,n]=size(ind_D);ind_X=ind(X);%求信息系统属性X的不可等价关系low=[];%存储正域个体的编号fori=1:mforj=1:mif(~isequal(ind_X{i},[])&&~isequal(ind_D{j},[]))if(ismember(ind_X{i},ind_D{j}))low=union(low,ind_X{i});%由性质Pos_AT(d)=low_AT(X1)Ulow_AT(X2)U...endendendendpos_d=low;。
matlab程序设计实例解析
matlab程序设计实例解析MATLAB程序设计实例解析一、简介本文旨在通过实例解析的方式,介绍MATLAB程序设计的基本概念和技巧。
通过这些实例,读者将能了解如何使用MATLAB进行数据处理、算法实现和可视化。
二、MATLAB基础知识2.1 MATLAB环境的搭建在本章中,我们将介绍如何安装、配置和启动MATLAB环境。
包括MATLAB的版本选择、安装过程中的注意事项以及常见问题解答。
2.2 MATLAB基本语法与数据类型这一章节将介绍MATLAB的基本语法和数据类型。
包括变量的定义、运算符的使用、条件语句和循环结构等。
同时也会介绍MATLAB 中常用的数据类型,如数值型、字符型和数组等。
2.3 MATLAB函数的使用在本章中,我们将介绍如何定义和使用MATLAB函数。
包括函数的输入输出、函数的封装与调用以及函数的文件组织。
同时还会介绍MATLAB内置函数的使用和自定义函数的实现。
2.4 MATLAB数据处理这一章节将探讨MATLAB中数据处理的基本技巧。
包括数据导入、数据清洗与预处理、数据统计和数据可视化等。
同时还会介绍MATLAB中常用的数据处理工具箱的使用方法。
三、MATLAB算法实现3.1 数值计算与优化方法在本章中,我们将介绍MATLAB中数值计算和优化方法的实现。
包括数值积分、数值微分、方程求解和最优化等。
同时还会介绍MATLAB中常用的数学工具箱和优化工具箱的使用方法。
3.2 信号处理与滤波器设计这一章节将探讨MATLAB中信号处理和滤波器设计的应用。
包括信号处理基础、时域与频域分析、滤波器设计和滤波器实现等。
同时还会介绍MATLAB中常用的信号处理工具箱的使用方法。
3.3 图像处理与计算机视觉在本章中,我们将介绍MATLAB中图像处理和计算机视觉的应用。
包括图像读取与显示、图像增强与滤波、特征提取和目标检测等。
同时还会介绍MATLAB中常用的图像处理工具箱和计算机视觉工具箱的使用方法。
广义多粒度粗糙集属性约简和matlab计算
广义多粒度粗糙集属性约简和matlab计算
张先韬
【期刊名称】《计算机工程与应用》
【年(卷),期】2016(052)008
【摘要】定义了基于广义多粒度粗糙集的属性约简,研究了约简的一些基本性质,给出matlab计算的过程,并给出计算实例.定义了信息系统的严格协调、软不协调性、粒度协调、粒度不协调,定义了广义多粒度下约简、粒度约简、(下/上近似)分布协
调约简、(下/上近似)质量协调约简,并给出部分结论.广义多粒度粗糙集的约简适用于乐观多粒度粗糙集和悲观多粒度粗糙集.研究结果可完善多粒度粗糙集理论,为理
论研究和应用奠定基础.
【总页数】6页(P43-48)
【作者】张先韬
【作者单位】中煤科工集团重庆研究院有限公司,重庆 400039;瓦斯灾害监控与应
急技术国家重点实验室,重庆 400039
【正文语种】中文
【中图分类】TP18
【相关文献】
1.多粒度粗糙集模型下的矩阵属性约简算法 [J], 李丹
2.基于决策表的多粒度粗糙集属性约简研究 [J], 赵思雨;钱婷;魏玲
3.基于局部可调节多粒度粗糙集的属性约简 [J], 侯成军; 米据生; 梁美社
4.利用多粒度粗糙集属性约简和TOPSIS的IPv6负载均衡机制 [J], 罗宏等;蓝耿;聂良刚;粟光旺;伍一坤
5.多源覆盖信息系统下的加权广义多粒度粗糙集模型及其应用 [J], 骆公志;陈佳馨因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
粗糙集属性约简
注:这是我学粗糙集时老师给的作业
属性约简的顺序如下:求正域、生成未经处理的区分矩阵、对区分矩阵进行化简、求核、对已经处理过的区分矩阵进行属性约简。
约简后的决策表有26行,所有12个属性都是正域中的属性,核为空
程序:
% main.m
tic;
a=[ 1,1,1,1,0,0,0,0,1,1,0,1;
0,0,0,0,0,0,0,0,0,0,0,0;
1,0,1,0,0,0,0,0,0,1,0,0;
0,0,0,1,1,1,1,0,1,0,1,1;
1,0,0,1,1,1,1,1,0,1,1,0;
0,1,0,1,1,1,1,1,1,0,0,1;
1,0,0,0,1,1,1,0,0,1,1,1;
1,1,1,1,0,0,0,0,1,1,0,1;
1,0,1,1,1,0,0,0,1,1,0,1;
1,1,1,1,0,0,0,0,1,1,0,1;
1,0,1,1,1,0,0,0,1,1,0,1;
1,0,1,1,1,0,0,0,1,1,0,1 ];
d=[1;0;0;0;0;0;0;1;1;1;1;1];
pos=posCD(a,d);
dismat=dismatrix(a,d,pos);
dism=disbe(dismat);
core=cor(dism);
[red,row]=redu(dism);
time=toc
% dismatrix.m
% 生成未经处理的区分矩阵dismat
function dismat=dismatrix(a,d,pos)
[m,n]=size(a);
p=1;
index1=0;index2=0;index=0;
dis=-1*ones(m*(m-1)/2,n);
for i=1:m
for j=i+1:m
if (isxbelongtopos(i,pos)&~isxbelongtopos(j,pos))...
|(~isxbelongtopos(i,pos)&isxbelongtopos(j,pos))...
|(isxbelongtopos(i,pos)&isxbelongtopos(j,pos)&~isxybelongtoindD(i,j,d)) index2=1;
end
if index2==0
continue;
end
for k=1:n
if a(i,k)~=a(j,k)
dis(p,k)=1;
index1=1;
else dis(p,k)=0;
end
end
if index1==1
p=p+1;index=1;
end
index1=0;
index2=0;
end
end
if p<=m*(m-1)/2
if index==0
dismat=[];
return;
end
if dis(p,1)==-1
p=p-1;
end
else p=m*(m-1)/2;
end
dismat=dis(1:p,:);
% redu.m
% 对已经处理过的区分矩阵进行知识约简function [red,row]=redu(dism)
[m,n]=size(dism);
red=[];
row=0;
if m<=0
return;
end
for i=1:n
if dism(1,i)~=0
row=row+1;
end
end
red(1:row,:)=zeros(row,n);
j=1;
for i=1:row
while dism(1,j)==0
j=j+1;
end
red(i,j)=1;
j=j+1;
end
temp=[];tempdis=[];
rowd=0;rowd1=0;
for i=2:m
j=1;
while j<=row
temp=uni(dism(i,:),red(j,:));
[s,n]=size(temp);
rowd1=rowd+s;
tempdis(rowd+1:rowd1,:)=temp;
rowd=rowd1;
j=j+1;
temp=[];
end
red=[];
red=disbe(tempdis);
tempdis=[];
[row,n]=size(red);
rowd=0;rowd1=0;
end
% 对区分矩阵或者约简矩阵进行化简即去掉包含关系function dism=disbe(dis)
[m,n]=size(dis);
p=m;
for i=1:m
if dis(i,1)~=-1
for j=1:m
if i~=j & dis(j,1)~=-1
if dis(i,:)<=dis(j,:)
dis(j,1)=-1;
p=p-1;
elseif dis(i,:)>=dis(j,:)
dis(i,:)=dis(j,:);
dis(j,1)=-1;
p=p-1;
end
end
end
end
end
dism=ones(p,n);
j=1;
for i=1:p
while j<=m & dis(j,1)==-1
j=j+1;
end
dism(i,:)=dis(j,:);
j=j+1;
end
% posCD.m
% a为条件属性矩阵,d为决策属性向量
% pos为正域,保存条件属性矩阵的索引值
function pos=posCD(a,d)
[m,n]=size(a);
p=m;
index=0;
for i=1:m
if a(i,1)~=-1
for j=i+1:m
if a(j,1)~=-1 &(a(i,:)==a(j,:)&d(i)~=d(j))
a(j,1)=-1;p=p-1;index=1;
end
if index==1
a(i,1)=-1;p=p-1;index=0;
end
end
end
pos=zeros(p,1);
i=1;
for r=1:p
while a(i,1)==-1&i<=m
i=i+1;
end
pos(r)=i;
r=r+1;
i=i+1;
end
% cor.m
% 对已经处理过的区分矩阵求核function core=cor(dism)
[m,n]=size(dism);
core1=zeros(1,n);
number=0;
for i=1:m
num=0;p=0;
for j=1:n
if dism(i,j)~=0
num=num+1;
p=j;
end
end
if num==1
core1(p)=1;
number=number+1;
end
end
if number==0
core=0;
else
core=zeros(1,number);
j=1;
for i=1:number
while core1(j)==0
j=j+1;
core(i)=core1(j);
j=j+1;
end
end
% uni.m
%对区分矩阵的第i行和red(j,:)运算,即将a中
%所有的1分别插入到red(j,:)中,待去掉包含关系function tempred=uni(disa,red)
[m,n]=size(red);
num=0;
for i=1:n
if disa(i)~=0
num=num+1;
end
end
tempred=ones(m*num,n);
temp=[];
j=1;
for i=1:num
while disa(j)==0
j=j+1;
end
temp=red;
temp(:,j)=ones(m,1);
tempred((i-1)*m+1:i*m,:)=temp;
j=j+1;
end
% isxbelongtopos.m
% 判断x是否在正域pos中
% x为索引值
% 返回值p,如果x在pos中p=1否则p=0 function p=isxbelongtopos(x,pos)
[m,n]=size(pos);
p=0;
if x<=0
p=-1;
return;
end
for i=1:m
if x==pos(i)
p=1;
end
end
% isxybelongtoindD.m
% 判断x,y是否在indD中
% x,y为索引值
% 返回值p,如果x,y在indD中p=1否则p=0 function p=isxybelongtoindD(x,y,d)
if x<=0 | x>size(d) | y<=0 | y>size(d)
p=-1;
return;
end
if d(x)==d(y)
p=1;
else p=0;
end
约简后的决策表。