




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
综合实验指导书范文 计算机辅助分析MATLAB基础与编程入门实验指导书电子与电气工程系MATLAB实验一:矩阵的使用一实验目的1掌握矩阵和数组的表示方法;2学会矩阵最常用的计算方法,能够一般方程组的解。 3掌握数组排序的规则4了解稀疏矩阵和多维数组二实验类型验证型三实验内容1设置matlab的工作环境,将工作目录设置为d:work,添加搜索目录d:example课本P47练习32在matlab的命令窗口里完成如下计算,其中t的值分别取-1,0,1,表达式如下43sin(43/3)2tyet?3自行产生一个5行5列的数组,得到最中间的三行三列矩阵。 (矩阵索引)4用magic产生一个5*5的矩阵,将这个矩阵的第二行与第三行互换位置5求方程组的根x1+4x2-3x3=22x1+5x2-x3=11key:4;2;1x1+6x2+x3=126已知一个多项式的系数向量是p=1-6-72-27,求这个多项式的根。 7已经两个多项式的系数分别是1234和14916,请求这两个多项式的乘积,及商和余数。 8给定一个多项式的根是-5-3+4i-3-4i,求原来的多项式9A=234;157;625用什么函数,保证第一列排序的时候,其他列跟着变化。 最后的结果是157;234;62510利用fzero求这个方程x2sin(x)+cos(x)=0的一个根.11补充题电路分析电路分析常常涉及到对方程组的求解,这些方程常常是利用描述电流进入和离开节点的电流方程,或者描述电路中网络回路上的电压的电压方程得出的。 下图描述了3个回路电压的方程方程式如下11121222132423432532()0()()0()0VR IR IIR IIRIRIIRIIR IV?假设5个电阻值为已知,2个电压值也为已知,求3个电流值。 (这题同解方程不是一样的嘛)12补充题仪器可靠性(解释)如果知道了单个组件的可靠性,那么各个组件特定组合的可靠性就可以用两种方法来确定。 第一,可以用概率论和统计学的理论知识与结果来计算分析可靠性;第二,也可以开发一个计算机模拟系统对可靠性进行估计。 本题假定单个组件的可靠性是0.8,使用随机值对整个系统的可靠性进行模拟。 ?四实验步骤1.仔细阅读Matlab帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。 2建立工作目录和搜索目录见教材第一章相关内容。 参阅matlab7.0从入门到精通P7P17查看matlab7.0的搜索路径选择matlab主窗口中的“FileSet Path”菜单,或者在命令窗口输入editpath,进入“设置搜索路径”对话框。 Add folder即可在命令窗口输入path,则会出现路径名称。 3e是表示用exp表达,圆周率用pi来表示。 4访问矩阵里的元素,用()内加上标记来表达,如果标记是用逗号隔开的两个数,那么访问的将是一个元素,如果标记是用逗号隔开的两个矩阵,将访问得到一个子矩阵。 5交换矩阵两行的位置,原理和上面相同,关键就是要找到一个表达新顺序的向量。 6.根据AX=B可以得到方程组的解X。 X可以用矩阵左除的方法,也可以用逆阵的方法。 关键要搞清楚谁写在前,谁先在后,用什么样的符号。 其中逆阵函数的写法是inv()。 7.先建立一个向量,将多项式的系数放到向量里去,然后再调用相应的求根函数,即可求出结果。 参阅精通Matlab7P257多项式的根一个多项式是用多项式的系数行向量表示的,向量中的系数按照其所对应的自变量的阶次的降序进行排列。 例如,多项式116251234?xxx在matlab中将用下面的行向量表示p=1-12025116注意,上面的多项式中自变量x的二次方不存在,则需要在系数向量中的相应元素位置上输入0,来告诉matlab该阶次的自变量不存在。 当利用系数行向量表示多项式后,利用函数roots求多项式的根。 本例中输入r=roots(p)则r=11.74732.7028-1.2251+1.4672i-1.2251-1.4672i如果知道一个多项式的根,能不能构建相应的多项式呢?可以函数为poly本例pp=poly(r)则pp=1-12-1.7764e-01425116pp(abs(pp)x=randperm (8)%new datax=51374268xs=sort(x)%sort ascendingby defaultxs=12345678xs=sort(x,ascend)%sort ascendingxs=12345678xs,idx=sort(x)%return sortindex aswell xs=12345678idx=26351748xs=sort(x,descend)xs=87654321如果要排序的数组是一个二维数组,则sort函数只对改数组的列进行排序,注意是没列都会排的。 A=randperm (6);randperm (6);randperm (6);randperm (6)A=326514453621254613214356As,idx=sort(A)?As,idx=sort(A)|Error:Unbalanced ormisused parenthesesor brackets.As,idx=sort(A)As=213311224513354624456656idx=342412413133124221231344如果只关心一列的排序问题,tmp,idx=sort(A(:,4)%sort4_th columnonly tmp=3566idx=4123As=A(idx.:)?As=A(idx.:)|Error:Unexpected MATLABoperator.As=A(idx,:)%rearrange rowsin allcolumns usingindex As=214356326514453621254613As=sort(A,2)%按行排序As=123456123456123456123456As=sort(A,1)%同sort(A)As=213311224513354624456656本题解法A=234;157;625A=234157625tmp,idx=sort(A(:,1)tmp=126idx=213As=A(idx.:)?As=A(idx.:)|Error:Unexpected MATLABoperator.As=A(idx,:)As=157234625降序就在后面加descend如sdata,index=sort(A,descend)sort(A,2,descend)11.如果求根的方程式不为多项式的形态就不能用roots函数。 而这类的方程式多半是非线性方程式,其函数形态变化很大。 对于解这类方程式的根,可以用fzero函数,它其实是用来找一函数f(x)的x值代入时,会使该函数值为零(f(x)=0);而这也就是根的特性,因此我们可以用fzero求根。 求任一方程式的根有三步骤 (1)先定义方程式。 要注意必须将方程式安排成f(x)=0的形态,例如一方程式为sin(x)+x=3,则该方程式应表示为f(x)=sin(x)+x-3。 可以M-file函式定义方程式。 (2)代入适当范围的x,y(x)值,将该函数的分布图画出,藉以了解该方程式的长相。 (3)由图中决定y(x)在何处附近(x0)与x轴相交,以fzero的语法fzero(function,x0)即可求出在x0附近的根,其中function是先前已定义的函数名称。 如果从函数分布图看出根不只一个,则须再代入另一个在根附近的x0,再求出下一个根。 非线性方程数值求解函数fzero z=fzero(fname,x0,tol,trace)其中fname是待求根的函数文件名,x0为搜索的起点,一个函数可能有多个根,但fzero函数只给出离X0最近的那个根,tol控制结果的相对精度,缺省时取eps,trace指定迭代信息是否在运算时显示,1为显示,0为不显示,缺省时为0例子求0210)(?xxxf在x0=0.5附近的根z=fzero(x-10.x+2,0.5)z=0.375812.提示先将方程组成以电流为数的三元一次方程组,带入事先设定好的5个电阻和2个电压值。 得到AX=B的形式,然后通过左除或者求逆的方法得到方程组的解,也即是电流的值。 13.首先,需要模拟单个组件的性能,如果一个组件的可靠性为0.8,那么它将在80%的时间内正常工作,要模拟这个性能,可生成0-1之间的一个随机值。 如果值在0-0.8之间,就可假设这个组件是正常工作的,否则假设它失效。 为了模拟3个组件的串行设计,我们生成3个0-1之间的随机数,如果所有3个数都小于或者等于0.8,那么这次试验中该设计正常工作。 3个一组,我们生成1000组数据来测试。 a=rand(3,1000)pos=a=0.8sum1=sum(pos)pos2=sum1=3sum(pos2)494/1000519要估算组件可靠性为0.8的并行设计的可靠性,我们再次生成3个0-1之间的随机浮点数,如果3个数字中的任何一个小于或者等于0.8,那么此次试验中该设计正常工作。 a=rand(3,1000)pos=a=1sum(pos2)995/1000992五实验报告要求1实验报告要在实验时交上给老师审阅,无报告或者报告不者推迟本次实验。 2报告内容分实验前,实验中,实验后。 实验前报告撰写内容是实验题目和实验解答。 实验中撰写内容是修改错误,进行注解,得到结果。 实验后,写出实验总结。 格式如下实验标题MATLAB实验一:矩阵的使用实验过程1已知A=234;157;625用什么函数,保证第一列排序的时候,其他列跟着变化。 最后的结果是B=157;234;625解答实验调试实验结果2在matlab的命令窗口里完成如下计算,其中t的值分别取-1,0,1,表达式如下43sin(43/3)2tyet?解答实验总结实验自评实验调试实验结果MATLAB实验二:元胞和结构定义一实验目的1较熟练地掌握矩阵元素的访问2进一步掌握矩阵中的关系运算的特点及索引地使用,分辨出元胞数组与结构数组之区别,灵活地控制调用结构体数组里元素。 二实验类型设计型三实验内容1自行产生一个5行5列的数组,用两种方法得到最中间的三行三行矩阵。 2根据a=reshape(-4:4,3,3)做一个矩阵,然后 (1)取出所有大于0的元素构成一个向量(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量) (2)将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。 3建立如下一个元胞数组,现在要求计算第一个元胞第4行第2列加上第二个元胞+第三个元胞里的第二个元素+最后一个元胞的第二个元素。 a=pascal (4),hello;17.3500,7:2:1004建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的数据表示了有10门课程,每门课程有三个阶段的分数。 问题是问题1,如何找到第2个人的分数并显示出来问题2,如何找到第2个人的每门课程3个阶段的平均分数并显示出来问题3,全班同学的10门课程的每门课程的平均分如何计算出来?要求放到一个数组里。 问题4,找到这个班所有同学的姓名放到一个元胞数组里5给定一个图像文件,格式是jpg,通过inportdata引入这个文件,查看引入后数据保存是一个数组,是100*100*3的一个数组,这是一个三维的数组,表明有100*100个点,每个点有RGB三个方面决定的。 现在,要求将这些点的中间部分30个象素宽度的正方型用黑点表示。 (图片是否保存在任何地方都可以调用啊,还是只能保存在work里面)6手动构造一个长宽页是1000*1000*3的图像,每个图像的点有三个0-255之间的随机值构成。 然后使用image函数显示这个图像,再用imwrite函数保存这个图像,使这个图像用图片浏览器也能够查看。 7将一个矩阵转化成结构体有三个一维向量分别表示若干个点(5个点)的RGB值,如R=255*rand(1,5),G=255*rand(1,5),B=255*rand(1,5)。 将这三个一维向量组成一个5*3矩阵(5表示5个点,3表示每个点有三个色值)。 然后将这个表示若干点色值的矩阵转化成元胞数组,最后将元胞数组转成包含R,G,B三个属性的结构体。 四实验步骤1.仔细阅读Matlab帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。 2.先建立一个5*5的矩阵,然后可以通过使用索引访问矩阵元素的多种方法中的访问由指定的向量I,和向量J来指定。 本题还可以通过空数组的方式来得到,空数组产生的主要目的就是为了删除空间,我们可以先将这个5*5矩阵的第1,5行设置为空,再将第1,5列设置为空即可。 3首先建立一个矩阵,然后用关系运算符找出大于0的索引矩阵,根据这个索引就可以得到满足条件的矩阵了,第二个问题,是需要使用两个数组的点积运算。 参阅课本P101P102例3-13和例3-14a=reshape(-4:4,3,3)a=-4-12-303-214b=zeros (3)b=000000000ab ans=001001011pos=ab pos=001001011A=a(pos)A=1234A=zeros (3)A=000000000A=a(pos)A=1234A=conv(a,pos)?Error using=conv Aand Bmust bevectors.A=a.*pos A=00xx0144.元组数组的设置可以由多种方式,但总体来说,还是一个数组(矩阵,可看作是广义矩阵),元组数组里的元素我们称为元胞,要想访问元胞里的元素,我们必须使用,而不是(),元素里的部分内容的访问需要用到()。 因此,本题先建立元胞数组,再访问元胞元素里的分量,加起来即可。 a=pascal (4),hello;17.3500,7:2:100a=4x4doublehello17.35001x47doublea1=a1,1(4,2)a1=4a2=a2a2=17.3500a3=3 (2)?a3=3 (2)|Error:Unbalanced ormisused parenthesesor brackets.a3=a3 (2)a3=ea4=a4 (2)a4=9b=a1+a2+a3+a4b=131.35005.结构体数组的建立方法有两种,第一种是通过struct关键字来引导的建立方法,这种方法相当于初始化赋值数据,数据必须被包着,很象元胞元素;第二种是直接给某一个结构体赋值,实际上是给它的某个属性赋值,赋值的数据就是一般的数据格式。 本题首先建立结构体数组,结构体里有三个字段,可以先建立student (1)的各个字段,然后再建立student (2),依次类推。 (问,这些字段是我自己定义的吗?)另外,在建立分数字段的时候用到了rand函数,用这个函数建立3行10列的矩阵,表示10门课程,每门课程有三次成绩。 问题1要得到某个人的成绩,需要用()的方式访问数组里某个人,然后再用“.”来操作其成员数据。 问题2求每个人的平均分,需要用到mean函数。 问题3要得到全班所有人(实际给出3个人),每个人10门平均分,有两种方法方法一,可以借助问题2的方法先求出第1个人的平均分,再求第2人的平均分,再求第3个人的平均分,然后用a1;a2;a3将平均分组合起来变成一个平均分矩阵,最后再求一次平均分即得到结果。 方法二,就应该预先建立一个3*10的矩阵meanss,这个矩阵预先都放0,注意矩阵的赋值方式meanss(3,10)=0。 然后,用循环的方式将求出来的第i个人的平均分交给矩阵meanss相应的第i行。 问题4,要将姓名放在一个矩阵里,有两种方法。 第一种方法可以使用strvcat这个函数来将不同长度的字符串接合在一起,如names=strvcat(names,student (1).name)就接合了第一个人的姓名,用这种方法可以接合多个字符串,如果编程解决的话,只要使用循环即可完成任务。 第二种方法,保存不同长度字符串使用元胞数组是非常方便的,因为不同的元胞元素结构、长度等一切皆可不同。 首先定义一个空元胞,例如names=cell (1),然后从结构体里取出姓名依次放入元胞元素中去即可,格式如names1=第1个学生的姓名。 若是编程来解决这个问题,思路也是一样的,只不过,需要使用循环。 student=structname,A,B,C,age,12,13,11,score,rand(3,10)?Undefined variablestructor classstruct.student=struct(name,A,B,C,age,12,13,11,score,rand(3,10)student=1x3struct arraywith fields:name agescorestudent (2).name ans=Bstudent (2).score ans=Columns1through50.01530.93180.84620.67210.68130.74680.46600.52520.83810.37950.44510.41860.20260.01960.8318Columns6through100.50280.30460.68220.15090.86000.70950.18970.30280.69790.85370.42890.19340.54170.37840.5936student (2).age ans=13a2=mean(student (2).score)a2=Columns1through50.40240.60550.52470.51000.6309Columns6through100.54710.22920.50890.40900.7691a1=mean(student (1).score)a1=Columns1through50.40240.60550.52470.51000.6309Columns6through100.54710.22920.50890.40900.7691student (1).score ans=Columns1through50.01530.93180.84620.67210.68130.74680.46600.52520.83810.37950.44510.41860.20260.01960.8318Columns6through100.50280.30460.68220.15090.86000.70950.18970.30280.69790.85370.42890.19340.54170.37840.5936a3=mean(student (3).score)a3=Columns1through50.40240.60550.52470.51000.6309Columns6through100.54710.22920.50890.40900.7691A=a1;a2;a3A=Columns1through50.40240.60550.52470.51000.63090.40240.60550.52470.51000.63090.40240.60550.52470.51000.6309Columns6through100.54710.22920.50890.40900.76910.54710.22920.50890.40900.76910.54710.22920.50890.40900.7691asum=mean(A)asum=Columns1through50.40240.60550.52470.51000.6309Columns6through100.54710.22920.50890.40900.7691B=student (1).name,student (2).name,student (3).nameB=ABC6.一个图像的引入是通过importdata来引入的,引入后发现是一个三维数组,其中每一页上是红、绿、兰的颜色,根据要求,我们需要将这三页中间区域全部改成黑色,黑色就是0,0,0的组合,我们只要找到相应的行、列区域,将页用“”表示,全部设为0即可。 7.本题的关键是如何设置这个1000*1000*3的三维数组,用随机函数很容易生成,但要将随机值改成0-255之间的整数才可以,可以用a=uint8(255*rand(10,10,3)这种方法来产生,显示其内容用image(a),因为这是颜色的范围数据。 将三维数组保存成图像文件,我们使用imwrite函数,比如说imwrite(a,t1.jpg,jpg)就可以保存三维数组a到t1.jpg这个图像文件中。 8.在所有的数据类型中,只有元胞数组和结构体类型最相似,因为它们都可以表示不相干的数据,因此基于这点,系统提供了元胞数组和结构体相互转化的函数。 本题要求将一个一般的矩阵转成结构体,思路是一般矩阵?元胞数组?结构体。 而元胞转结构体要满足一定的格式要求,这个格式如下字段名1(如R)字段名2(如G)字段名3(如B)2331234524388185根据给定的题目条件,有3个RGB的向量,R=255*rand(1,5)G=255*rand(1,5)B=255*rand(1,5)这三个向量是行向量。 我们首先要把这3个向量整合成上表的模样一般矩阵,以便于转化得到的元胞满足向结构体转化的条件。 一般矩阵?元胞数组转化需要使用函数num2cell元胞数组?结构体转化需要cell2struct,使用这个函数,必须先定义一个字段名元胞fields=red,green,blue,这个元胞fields作为cell2struct函数的参数引入,以便于能够分清楚,各列数据属于哪个字段。 R=255*rand(1,5)R=126.6209229.4411209.5154164.4521208.5835G=255*rand(1,5)G=168.358087.202573.880187.0044136.1901B=255*rand(1,5)B=185.413978.8690213.8165144.858594.4555A=R;G;BA=126.6209229.4411209.5154164.4521208.5835168.358087.202573.880187.0044136.1901185.413978.8690213.8165144.858594.4555A=R GBA=Columns1through5126.6209229.4411209.5154164.4521208.5835Columns6through10168.358087.202573.880187.0044136.1901Columns11through15185.413978.8690213.8165144.858594.4555A=R;G;BA=126.6209168.3580185.4139229.441187.202578.8690209.515473.8801213.8165164.452187.0044144.8585208.5835136.190194.4555B=num2cell(A)B=126.6209168.3580185.4139229.441187.202578.8690209.515473.8801213.8165164.452187.0044144.8585208.5835136.190194.4555fields=red,green,bluefields=redgreenblueC=fields,cell2struct(B)?Error using=cell2struct Notenough inputarguments.C=cell2struct(B)?Error using=cell2struct Notenough inputarguments.C=struct(red,B(:,1),green,B(:,2),blue,B(:,3)C=5x1struct arraywith fields:red greenblue比对P126例3-341*2struct arraywith fields可知这个结果是错误的结果显示应该为1*5struct arraywith fields元胞和结构体元胞我们将其比作小区墙上一排排的邮箱来说明。 这些邮箱的集合构成了一个元胞,其中每一个邮箱就是这个元胞中的一个单元。 每个邮箱中存放的物品不一样,这相当于每一个单元中所包含的数据类型或者数组维数是不同的。 例如一个字符串或者一个多维数组等。 每个邮箱都是用一个数字(如001)来标识其地址的,同样,元胞中的每一个单元也是用一个数字来索引的。 当我们向一个邮箱发送邮件时,需要明确指明该邮箱的号码,同样,当用户将数据加入到元胞中或者从元胞中提取数据,也需要明确标识出该单元的索引号。 结构体与元胞十分相似。 唯一不同的地方在于结构体中的数据存储不是由数字来标识的,而是由名称来标识的。 仍用邮箱比方,邮箱的集合就是结构体,每个邮箱相当于结构体中的一个结构元素,只不过这时候邮箱是用其所有者的名字(如张三)标识的,而不是数字代码,当我们向一个邮箱发送邮件时,需要明确指出接收邮件的邮箱名字(如张三),同样,当用户将数据添加到一个特殊的结构元素中,或从一个结构元素中提取数据时,也需要标识出该结构元素的名称。 参见P123表3-13元胞创建使用运算符,将不同类型和尺寸的数据组合在一起P115Cell使用创建空元胞数组P116访问A(1,2)A1,2A1,2 (4)P118操作函数Cellfun celldisp错误的为什么R=255*rand(1,5)R=179.1987139.3756113.4445177.1146158.4341G=255*rand(1,5)G=202.6794243.9951133.2605224.436344.1038B=255*rand(1,5)B=结构体直接给字段赋具体数值,用“.”Struct P126使用的是()P127249.835569.219164.3440223.3142188.0130A=R;G;BA=179.1987139.3756113.4445177.1146158.4341202.6794243.9951133.2605224.436344.1038249.835569.219164.3440223.3142188.0130C=num2cell(A)C=179.1987139.3756113.4445177.1146158.4341202.6794243.9951133.2605224.436344.1038249.835569.219164.3440223.3142188.0130D=cell2struct(C)?Error using=cell2struct Notenough inputarguments.D=cell2struct(red,C(1,:),green,C(2,:),blue,C(3,:)?Error using=cell2struct Toomany inputarguments.D=cell2struct(red,C(1,:),green,C(2,:),blue,C(3,:)?Error using=cell2struct Toomany inputarguments.help cell2struct CELL2STRUCT Convertcell arrayto structurearray.S=CELL2STRUCT(C,FIELDS,DIM)converts thecell arrayC intothe structureS byfolding thedimension DIMof Cinto fieldsof S.SIZE(C,DIM)must matchthe numberof fieldnames inFIELDS.FIELDS canbe acharacter arrayor acell arrayof strings.Example:c=tree,37.4,birch;f=category,height,name;s=cell2struct(c,f,2);See alsostruct2cell,fieldnames.Reference pagein Helpbrowser doell2structfields=red,green,bluefields=redgreenblueD=cell2struct(fields,C)?Error using=cell2struct Numberof fieldnames mustmatch numberof fieldsin newstructure.C=CC=179.1987202.6794249.8355139.3756243.995169.2191113.4445133.260564.3440177.1146224.4363223.3142158.434144.1038188.0130D=cell2struct(fields,C)?Error using=cell2struct Numberof fieldnames mustmatch numberof fieldsin newstructure.C=CC=179.1987139.3756113.4445177.1146158.4341202.6794243.9951133.2605224.436344.1038249.835569.219164.3440223.3142188.0130D=cell2struct(C,fields,5)?Error using=cell2struct Numberof fieldnames mustmatch numberof fieldsin newstructure.c=tree,37.4,birch;f=category,height,name;s=cell2struct(c,f,2);c=tree,37.4,birch;f=category,height,name;s=cell2struct(c,f,2)s=category:treeheight:37.4000name:birchD=cell2struct(C,fields,3)?Error using=cell2struct Numberof fieldnames mustmatch numberof fieldsin newstructure.D=cell2struct(C,fields,(3,6)?D=cell2struct(C,fields,(3,6)|Error:Expression orstatement isincorrect-possibly unbalanced(,or.C C=179.1987139.3756113.4445177.1146158.4341202.6794243.9951133.2605224.436344.1038249.835569.219164.3440223.3142188.0130fields fields=redgreenblueD=cell2struct(C,fields,3)?Error using=cell2struct Numberof fieldnames mustmatch numberof fieldsin newstructure.C=CC=179.1987202.6794249.8355139.3756243.995169.2191113.4445133.260564.3440177.1146224.4363223.3142158.434144.1038188.0130D=cell2struct(C,fields,3)?Error using=cell2struct Numberof fieldnames mustmatch numberof fieldsin newstructure.C=CC=179.1987139.3756113.4445177.1146158.4341202.6794243.9951133.2605224.436344.1038249.835569.219164.3440223.3142188.0130D=cell2struct(C,fields,5)?Error using=cell2struct Numberof fieldnames mustmatch numberof fieldsin newstructure.五实验报告要求1实验报告要在实验时交上给老师审阅,无报告或者报告不者推迟本次实验。 2报告内容分实验前,实验中,实验后。 实验前报告撰写内容是实验题目和实验解答。 实验中撰写内容是修改错误,进行注解,得到结果。 实验后,写出实验总结。 具体格式见第一次实验要求。 MATLAB实验三:M文件编写一实验目的1掌握MATLAB中M文件编写的一般特点2掌握输入与输出参数的格式,对M文件的编译有基本的认识3对MATLAB与外部程序的接口方式有初步的了解二实验类型设计型三实验内容1给定一个矩阵a=123456编写一个M函数,要求输入是a,输出有三个平均数,标准差,秩。 程序运行后分析其性能指标(主要从时间上分析)2编写一个M函数,将一个给定图片文件里的白色全部换成另一种颜色,比如说将白色转成黑色。 3,4,5课本上有例子吗?在什么地方?3要求编写一个M函数文件,完成求三角函数,x变化范围从-pi到pi,求出相应的y的值,并画出图,然后使用编译器生成EXE,脱离MATLAB环境运行。 4要求编写一个MEX文件,完成将两个矩阵的求和运算。 5在matlab里编写一个最简单的M函数,使用任何一种方法,将这个函数导出成dll文件,并在vc环境下使用dll文件里的函数。 四实验步骤1.仔细阅读Matlab帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。 2.首先输入edit进入M文件界面,然后输入函数,注意函数定义的格式。 编写函数的时候,要求根据数学公式来求平均数,标准差。 平均数的求法是求出列的总和后再除以列的长度;标准差(每列数据的标准差)是数的平方的平均数-均值的平方,得到的结果再来一个算术平方根。 即公式如下22()()E xEx?。 最后是程序分析,我们需要启动性能分析窗体,在run thiscode:里输入需要在命令窗口里输入的内容,要注意输入参数和输出参数。 程序C.worktestx=123;456x=123456avg,stdev,r=test(x)avg=2.50003.50004.5000stdev=1.50001.50001.5000r=9.50800.7729其他的超链接点开也这样,奇怪吧2.可以用随机函数rand产生一个三维数组img来表示一幅图片,比如说10*10*3的大小,长宽各是10个象素点,接着,改变某几个点为白色(白色要求rgb都是0),然后用imwrite(img,t1.jpg,jpg)保存这个图片,通过image(img)来查看图片,这样素材就有了。 下面编写程序来改变其中的白色部分,将白色改为黑色,即这个点的三个指标全部是255。 3.这个题目是实验编译器的使用。 首先进入界面,然后输入函数。 其中x就是一个行向量,根据x可以方便地得到相应的y向量,使用plot函数即可以完成第一个任务。 第二个任务是将这个函数文件编译,需要用到编译器m。 第一步确定m是否安装,一般默认情况下是安装好的,如果没有安装,请找到安装目录下的MCRInstaller.exe,运行它安装;第二步进行编译器的设置,mex-setup和mbuildsetup的配置。 根据提示进行选择使用VC编译器;第三步,对刚才的M文件进行编译,方法是通过参数m进行设置生成可执行文件和相应的一些文件,在M文件所有的目录找到EXE文件,运行后看效果。 参阅matlab7.0从入门到精通P500不管是想生成独立的外部可执行程序,或者是想创建一个C共享库以及软件组件,只要源码是m文件,那么都可以借助编译命令m来实现。 基本格式mm myfun 1、M文件 3、包含绘图命令的M文件M文件function yychxux=-pi:pi;y=sin(x);plot(x,y);命令窗口yychxum-m yychxuSelect apiler:1L Cversion2.4.1in C:MATLAB71BINWIN32.sysl0None Compiler:1Try toupdate optionsDataMathWorksMATLABR14SP3popts.bat FromC:MATLAB71BINWIN32.win32mbuildoptslpp.bat Done.-C:MATLAB71binwin32mwutil.dllError:DllRegisterServer inC:MATLAB71binwin32mwutil.dll failedUndefined subroutine&mexsetup:exp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖南省社会科学院(湖南省人民政府发展研究中心)招聘高层次人才14人模拟试卷及1套参考答案详解
- 2025河北科技工程职业技术大学选聘52人考前自测高频考点模拟试题及完整答案详解1套
- 2025年商标许可使用合同5篇
- 2025广西来宾市忻城县政府投资审计中心招聘见习生2人考前自测高频考点模拟试题(含答案详解)
- 2025年上海大学公开招聘岗位(第二批)模拟试卷及参考答案详解一套
- 2025昆明市盘龙区汇承中学招聘教师(12人)模拟试卷及答案详解(易错题)
- 2025贵州天柱县第二季度(第一次)招聘8个全日制城镇公益性岗位模拟试卷含答案详解
- 2025广东省农业科学院设施农业研究所招聘劳动合同制人员1人考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025届特发集团春季校园招聘模拟试卷及1套完整答案详解
- 2025年威海市水产学校公开招聘教师(7人)模拟试卷及答案详解(全优)
- 2025年初级药师资格考试试题(附答案)
- 2025广东云浮市检察机关招聘劳动合同制司法辅助人员17人备考考试题库附答案解析
- 人工智能与建筑产业体系智能化升级研究报告
- 包覆拉拔法制备铜包铝、铜包钢双金属导线的多维度探究与展望
- 大气的受热过程教学课件
- 茶叶农药知识培训课件
- 【2025秋季新修订教材】统编语文三上第六单元《19 香港璀璨的明珠》公开课一等奖创新教学设计
- 2025-2026学年人教版(2024)初中数学七年级上册教学计划及进度表
- 人教版数学二年级上册第一单元 分类与整 理 综合素养测评A卷(含答案)
- 2025版煤矿安全生产标准化管理体系考试题及答案(采煤部分)
- 油田冬季八防安全经验分享
评论
0/150
提交评论