matlab程序测试
- 格式:pdf
- 大小:97.86 KB
- 文档页数:2


kmeans聚类算法检测故障的matlab程序K-means聚类算法是一种常见的无监督学习算法,可用于对数据集进行分类或聚类。
将其应用于故障检测是一种有效的技术,它可以通过识别数据中的异常模式来检测故障。
本文将介绍如何使用Matlab 实现K-means聚类算法以检测故障。
一、程序概述以下是一个简单的Matlab程序,该程序使用K-means聚类算法来检测故障。
该程序首先读取一组传感器数据,然后应用K-means算法对这些数据进行聚类,最后识别出异常模式以检测故障。
二、数据预处理在运行K-means聚类算法之前,需要对数据进行预处理。
这包括去除噪声、填充缺失值、归一化数据等。
在本程序中,我们将使用Matlab内置的函数来执行这些步骤。
三、K-means聚类算法K-means算法的输入是一组数据点及其相应的类别标签。
算法将数据点分配给最近的类别中心(即质心),并更新质心。
这个过程重复进行,直到算法收敛或达到预设的迭代次数。
在Matlab中,可以使用`kmeans`函数来执行K-means聚类算法。
为了选择最佳的聚类数量(即K值),可以使用一些启发式方法,如肘部法则或轮廓系数。
在本程序中,我们使用轮廓系数来确定最佳的K 值。
四、故障检测一旦K-means聚类算法完成并得到聚类结果,就可以使用这些结果进行故障检测。
异常模式通常包括在正常状态下不会出现的极端值或模式变化。
可以使用一些统计测试(如Z-score测试)来检测这些异常模式。
在Matlab中,可以使用`findpeaks`函数来找到数据中的峰值和谷值,并使用这些信息来检测异常模式。
对于每个聚类,我们可以计算每个数据点的Z-score,并使用这些值来标记异常数据点。
一旦标记完异常数据点,就可以对这些数据进行可视化,以便更直观地检测故障。
五、结果展示和优化程序运行结束后,可以通过可视化工具(如Matlab内置的`scatter`函数)将结果展示出来。
2015秋2013级《MATLAB程序设计》实验报告实验一班级:软件131姓名:陈万全学号:132852一、实验目的1、了解MATLAB程序设计的开发环境,熟悉命令窗口、工作区窗口、历史命令等窗口的使用。
2、掌握MATLAB常用命令的使用。
3、掌握MATLAB帮助系统的使用。
4、熟悉利用MATLAB进行简单数学计算以及绘图的操作方法。
二、实验内容1、启动MATLAB软件,熟悉MATLAB的基本工作桌面,了解各个窗口的功能与使用。
图1 MATLAB工作桌面2、MATLAB的常用命令与系统帮助:(1)系统帮助help:用来查询已知命令的用法。
例如已知inv是用来计算逆矩阵,键入help inv即可得知有关inv命令的用法。
lookfor:用来寻找未知的命令。
例如要寻找计算反矩阵的命令,可键入lookfor inverse,MATLAB即会列出所有和关键字inverse相关的指令。
找到所需的命令後,即可用help进一步找出其用法。
(2)数据显示格式:常用命令:说明format short 显示小数点后4位(缺省值)format long 显示15位format bank 显示小数点后2位format + 显示+,-,0format short e 5位科学记数法format long e 15位科学记数法format rat 最接近的有理数显示(3)命令行编辑:键盘上的各种箭头和控制键提供了命令的重调、编辑功能。
具体用法如下:↑----重调前一行(可重复使用调用更早的)↓----重调后一行→----前移一字符←----后移一字符home----前移到行首end----移动到行末esc----清除一行del----清除当前字符backspace----清除前一字符(4)MATLAB工作区常用命令:who--------显示当前工作区中所有用户变量名whos--------显示当前工作区中所有用户变量名及大小、字节数和类型disp(x) -----显示变量X的内容clear -----清除工作区中用户定义的所有变量save文件名-----保存工作区中用户定义的所有变量到指定文件中load文件名-----载入指定文件中的数据三、源程序和实验结果1、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。
实验一要求: 查看matlab 的版本代码:version结果:ans =7.1.0.246 (R14) Service Pack 31.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。
(1)z 1=2185sin 2e+z1=(2*sin(85*pi/180))/(1+exp(2))z =0.2375(2)z 2=⎥⎦⎤⎢⎣⎡+=++545.0-i 212其中),1ln(212x x x x=[2,1+2*i;-0.45,5]x =2.0000 1.0000 + 2.0000i-0.4500 5.0000>> z2=1/2*log(x+sqrt(1+x*x))z2 =0.7114 - 0.0253i 0.8968 + 0.3658i0.2139 + 0.9343i 1.1541 - 0.0044i(3)z 3=23.0ln )3.0sin(23.03.0a a e e aa +++--,a=-3.0,-2.9,-2.8, …3.0 提示:用冒号表达式生成a 向量,求各点的函数值时用点乘计算。
a=[-3.0:0.1:3.0]z3=1/2.*((exp(0.3.*a)-exp(-0.3.*a))).*sin(a+0.3)+log((0.3+a).*1/2)(4)z 4=⎪⎩⎪⎨⎧<≤+-<≤-<≤32,12,21,110,222t t t t t t t 其中t=0:0.5:2.5提示:用逻辑表达式求分段函数值。
t=0:0.5:2.5t =0 0.5000 1.0000 1.5000 2.0000 2.5000>> z4=t.^2.*(t>=0&t<1)+(t.^2-1).*(t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t<3) z4 =0 0.2500 0 1.2500 1.0000 2.25002.已知:A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡7653877344-3412,B=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡72-3321-31求下列表达式的值:(1)A+6*B和A-B+I(其中I为单位矩阵) A=[12,34,-4;34,7,87;3,65,7]A =12 34 -434 7 873 65 7>> B=[1,3,-1;2,0,3;3,-2,7]B =1 3 -12 0 33 -2 7>> A+6*Bans =18 52 -1046 7 10521 53 49>> I=eye(size(A))I =1 0 00 1 00 0 1>> A-B+Ians =12 31 -332 8 840 67 1(2)A*B和A.*BA*Bans =68 44 62309 -72 596154 -5 241>> A.*Bans =12 102 468 0 2619 -130 49(3)A^3和A.^3A^3ans =37226 233824 48604247370 149188 60076678688 454142 118820>> A.^3ans =1728 39304 -6439304 343 65850327 274625 343(4)A/B和B\AA/Bans =16.4000 -13.6000 7.600035.8000 -76.2000 50.200067.0000 -134.0000 68.0000>> B/Aans =0.1027 -0.0062 -0.00690.0617 0.0403 -0.03660.0205 0.0855 -0.0507(5)[A,B]和[A([1,3],:);B^2][A,B]ans =12 34 -4 1 3 -134 7 87 2 0 33 65 7 3 -2 7>> [A([1,3],:);B^2]ans =12 34 -43 65 74 5 111 0 1920 -5 403.设有矩阵A和BA=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡25242322212019181716151413121110987654321,B=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡111340794-23096-171603 (1) 求它们的乘积C 。
matlab考试题及答案【篇一:matlab期末考试试卷及参考答案】lass=txt>1.设有程序a=[2,0,1,0;1,0,1,5;0, 6 ,2, 3];b=[1,2,-1;1,3,1];c=a(1:3,[1,2]);d=size(c)- length(b(2,:));f= c.*b’将下列命令的运行结果填在横线上0*、02. a=[2,3,2,1;1,2,2,1; 1,2,3,-2];a1=sum(aa(2,1));a(2,:)=[],a2=a.^2-4a1=; a2=;3.p=[1,2,5,4;2,2,1,3];max(p;mean(p3??x?sint(1).?(0?t?2?);3??y?cost二、(本题满分10分)试编写计算程序画出曲线与曲面图形(2).z?(x2?1)e?x?y22?xy,?2?x?2,?2?y?2.2%1 %2t=0:0.1: 2*pi; [x,y]=meshgrid(-2:0.1:2);x= sin(t).^3;z=(x.^2+1).* exp(-x.^2- y.^2+)+x.^2.*y; y= cos (t).^3;mesh(x,y,z) plot(x,y)三、(本题满分12分)编写程序解决下列问题:(1)试产生100?4阶矩阵使其元素在0—100之间的随机整数,可将此矩阵理解为100名同学的四门课程(课程1, 课程2, 课程3, 课程4)的成绩. (2)计算出每门课程和每位同学的平均成绩; (3)统计出总的优秀人次(90分及以上为优秀);(4)统计出四门课程成绩至少有两门课程不及格的人数. 解:(1) a=fix((100-0+1)*rand(100,4));(2) mean(a)mean(a,2) (3)sum(sum(a=90,2)==4)(4)sum(sum(a60,2)=2)四、(本题满10分)n设f(x)??k?1(?1)kk?1sinkx,返回该函数并保存y?fun1(x,n));(1)试编写函数式文件程序(程序的第一句为:function(2)用子图画出该函数在[0,2?]内图形(分别取n?20,50).(1). function y=fun1(x,n)(2). x=0:0.1:2*pi; y=0; y1= fun1 (x,20); for k=1:n y2= fun1 (x,50);y=y+ ((-1)^(k+1)*sin(k*x))/k; subplot(2,1,1),plot(x,y1)endsubplot(2,1,2),plot(x,y2) y五、(本题满分10分)试利用微分方程的数值解法写出下列微分方程的求解步骤和matlab程序. x???3tx??x?t,x(0)?2,x?(0)?0.(t的变化区间为[0,10]). 第一步:先将高阶微分方程转化为一阶微分方程组:选择状态变量x1?x?,x2?x,则原方程化为???3tx1?x2?t,?x1???x1.?x2x1(0)?0,x2(0)?2dxdt = [-3*t*x(1)+ x(2)+t; x(1)];第三步:求解微分方程,命令如下:[t,x]=ode45(@fun2,[0,10],[0;2])六、运用符号运算功能计算1.求方程ex下列各题,:?x2?2的根;?xsinxa???xe??lnx?da21?,并计算,?a(x)dx,a;dxs?x??;t?x?2e,x(0)?x?(0)?x??(0)?x???(0)?1的解2.生成符号矩阵3.计算极限limcosx?x(esinxcosx?x)x?04.用dsolve函数求解微分方程x六、参考程序: 1. solve(exp(x)=x^2+2) 2.syms x sa=[x*sin(x),log(x);exp(-x),1/(s+x)] diff(a) int(a) a*a 3.syms x limit((cos(x)-cos(x)^(1/2))/x/(exp(sin(x))-1))4.dsolve(d4x+x=2*exp(t),x(0)=1,dx(0)=1,d2x(0)=1,d3x(0)=1)七.用fsolve函数以及符号运算功能22??4x1?x2?2x1x2?x2?2?0?22??2x1?x2?3x1x2?3?0求解下面的非线性方程组:解一:function y=fc(x)y(1)=4*x(1).^2+x(2).^2+2*x(1).*x(2)-x(2)-2y(2)=2*x(1).^2+x(2).^2+3*x(1).*x(2)-3 y=[y(1) y(2)];x0=[1 1];fsolve(@fc,x0)解二: syms x1 x2[x1 x2]=solve(‘4*x1^2+ x2^2+2* x1* x2- x2-2=0’,’ 2*x1^2+x2^2+3* x1* x2-3=0’,’ x1’,’ x2’)《matlab程序设计》参考程序一、 (30分)1. d =0 -1 f =2 0 2 0 0 6 2. a1 =1 3 3 0 a2 =0 5 0 -3-3 0 5 0 3. max(p,[ ],1)=2 2 5 4mean(p,2)=32 4. x=15 5.0 1 4 -1 0 1 -4 -1 0 6.z =2010 7.285二、(10分)%1t=0:0.1: 2*pi; x= sin(t).^3; y= cos (t).^3; plot(x,y) %2[x,y]=meshgrid(-2:0.1:2);z=(x.^2+1).* exp(-x.^2- y.^2+)+x.^2.*y; mesh(x,y,z)三、(16分)syms xlimit((x-1)*log(x)/(exp(x-1)-1),x,1) %2solve(exp(x)-3*cos(x)+1=0) %3 syms xm=[ exp(-x), x;sin(x),exp(-0.1*x)* cos(3*x)] diff(m,2) int(m,x,0,pi) %4 syms t xdsolve(dx-6*x=exp(-t) ,x(0)=1)四、(12分)x=0.5:9.5;y=[ 0.16, 0.40, 0.66, 0.75, 0.88, 1.0, 1.1, 1.1, 1.2, 1.3];x1=1./x;y1=1./y; p=polyfit(x1,y1,1); a=p(2); b= p(1);ye=x./(a*x+b); plot(x,y,ro, x, ye, b-)grid onxlabel(自变量x ) ylabel(因变量y )title(因变量 y与自变量 x的拟合曲线图)五、(12分)%参考程序cj=round(normrnd(70,10,100,4)); for i=1:100 for j=1:4if cj(i,j)100 cj(i,j)=100;elseif cj(i,j)0 cj(i,j)=0;end end endkmean=round(mean(cj))disp(课程1课程2课程3课程4)disp(sprintf( %4d%7d%8d%8d ,kmean(1),kmean(2),kmean(3),k mean(4))) studentmean=round(mean(cj,2));studentnumber=[1:100];[studentnumber, studentmean] c=sum(sum(cj=90))【篇二:matlab习题及答案】241?b?1,计算a??与?468?的数组乘积。