matlab第五章思考与实验
- 格式:doc
- 大小:34.55 KB
- 文档页数:6
目录第五章自定义函数 (1)5.1 MA TLAB函数简介 (1)5.2 在MA TLAB中传递变量:按值传递机制 (6)例5.3 (7)5.3 选择性参数 (14)测试5.1 (16)5.4 用全局内存分享数据 (17)例5.4 (18)5.5 在函数调用两次之间本地数据的存储 (22)例5.5 运行平均数 (22)5.6 函数的函数(function functions), (26)例5.6 (27)5.7 子函数和私有函数 (29)5.8 总结 (29)5.9 练习 (30)5.1 (30)5.2 (30)5.3 (31)5.4 (31)5.5 (31)5.6 (31)5.7 (31)5.8 (31)5.9 (31)5.10 (31)5.11 (31)5.12 (32)5.13 (32)5.14 (32)5.15 (33)5.16 (33)5.17 (33)5.18 (34)5.19 (35)5.20 (35)5.21 (35)5.22 (35)5.23 (36)5.24 (36)5.25 (37)5.26 (37)第五章自定义函数在第三章中,我们强调了好的编程习惯的重要性。
我们进行开发的基本手段是自上而下的编程方法。
在自上而下的编程方法中,它开始于对所要解决问题的精确陈述和定义输入量和输出量。
下一步,我们在大面上进行算法的描述,然后把算法分解成一个一个的子问题。
再然后,程序员把这一个个子问题进行再一次的分解,直到分解成简单而且能够清晰理解的伪代码。
最后把伪代码转化为MATLAB代码。
尽管我们在前面的例子中,按照上面的步骤进行了编程。
但是产生的结果在某种程度上还是受限制的。
因为我们必须把每一个子问题产生的MATLAB代码嵌入到一个单独的大程序中。
在嵌入之前我们无法对每一次子问题的代码进行独立地验证和测试。
幸运的是,MATLAB有一个专门的机制,在建立最终的程序之前用于独立地开发与调试每一个子程序。
matlab实训心得体会(通用23篇)matlab实训篇1自己刚刚接触matlab有半个学期的时间,说实话我现在对MATLAB还是摸不着头脑,一方面是自己接触的时间太短,另一方面,就是自己在上机方面投入的时间有限,实践比较少。
现在,我对MATLAB的印象仅仅在解决习题和绘制图形上,但是我很喜欢MATLAB的简单的语法,易于绘制图形,编程也非常容易, 并且具有功能强大的开放式的toolbox。
因此,尽管我一直没有这方面的应用,但是我还是对它非常感兴趣,自己正打算暑假好好研究研究MATLAB。
下面是我学习MATLAB在理论和实践方面的一点心得与体会,可能有些地方自己理解的不是很正确,但是随着学习的深入,我想我可以发现自己的错误所在。
首先我想说的是,在理论方面,在学习MATLAB过程中,我感觉到它和c语言有许多相似之处,他有c语言的特征,但是比c语言编程计算更加简单,适合于复杂的数学运算。
但是MATLAB跟其他语言也有着很大的不同。
现在用的比较多的编程语言,除了MATLAB就应该是c、c++、VHDL,VB和Delphi也接触过,如果自己抱着“把其他语言的思想运用在MATLAB里面”的话,那么我想,即使程序运行不出错,也很难把握MATLAB的精髓,也就很难发挥MATLAB的作用了。
众所周知MATLAB是一个基于矩阵运算的软件,但是,真正在运用的时候,特别是在编程的时候,许多人往往没有注意到这个问题。
在使用MATLAB时,受到了其他编程习惯的影响,特别是经常使用的C语言。
因此,在MATLAB编程时,for循环(包括while循环)到处都是。
.这不仅是没有发挥MATLAB所长,还浪费了宝贵的时间。
我这里想说的一点是,往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++、C的思想。
MATLAB博大精深,涉及的内容很多,所以,我认为不要试图掌握MATLAB的每一个功能,熟悉和你专业最相关的部分就可以了,这也是老师在课堂上经常说的。
MATLAB数值计算班级:11电信一班姓名:何得中学号:20111060108实验目的:1.了解MATLAB提供的标准多项式的常用函数;2.掌握用MATLAB创建多项式;3.学会用MATLAB对数据的分析;实验仪器:MATLAB软件,电脑实验数据:>> poly2sym([1 2 6 -5 3 9])ans =x^5+2*x^4+6*x^3-5*x^2+3*x+9 >> A=[7 8 9;4 5 6;1 2 3];>> B=poly(A)B =1.0000 -15.0000 18.00000.0000>> poly2sym(B)ans=x^3-15*x^2+18*x+422583449577050 7/633825300114114700748351602688 >> v=[0.5 0.6i -0.4 -0.6i]v =0.5000 0 + 0.6000i -0.4000 0 - 0.6000i>> p=poly(v)p =1.0000 -0.1000 0.1600 -0.0360 -0.0720>> pr=poly2sym(p)pr=x^4-1/10*x^3+4/25*x^2-9/250*x-9/12 5>> p=poly([1 2 3 4 5]);>> polyval(p,6)ans =120>> p=[1 3 1 2 1];>> polyvalm(p,[3 6;8 4])ans = 7186 66668888 8297>> polyvalm(p,7)ans =3494>> p=[1 4 2];>> x=0:0.8:4;>> y=polyval(p,x)y = 2.0000 5.8400 10.9600 17.3600 25.0400 34.0000>> a=[1 -1 4 10];>> r=roots(a);r = 1.1879 + 2.4202i1.1879 -2.4202i-1.3758>> pp=poly(r)pp =1.0000 -1.0000 4.0000 10.0000>> p1=[1,0,1,1];>> p2=[0,1,-1,2];>> p1+p2ans =1 1 0 3>> p1-p2ans =1 -1 2 -1>> c=conv([1 1 2 2],[1 2 5 4])c = 1 3 9 15 18 18 8>> p1=[1,0,1,1]; >> p2=[1,-1,2];>> [q,r]=deconv(p1,p2) q = 1 1 r = 0 0 0 -1 >> g=[1 5 4 6 20 48 27 72 39 ]; >> h=polyder(g) h = 8 35 24 30 80 144 54 72 >> q=polyint(h) q =1 5 4 6 20 48 27 72 0 >> b=[4,9]; >> a=[1,7,8]; >> [r,p,k]=residue(b,a) r = 3.2127 0.7873 p = -5.5616 -1.4384 k = [] >> [b,a]=residue(r,p,k) b = 4.0000 9.0000 a = 1 7 8 x=linspace(0,2*pi,50); >> y=sin(x); >> [p,s]=polyfit(x,y,3) p = 0.0912 -0.8596 1.8527 -0.1649 s = R: [4x4 double] df: 46 normr: 0.5055>> plot(x,y,'r:*',x,polyval(p,x),'-o')>> a=ceil(rand(4,4)*12) a = 12 11 10 12 3 10 6 9 8 6 8 3 6 1 10 5 >> b=ceil(rand(4,4)*10) b = 10 1 2 3 10 4 3 2 5 9 2 1 9 1 7 8 >> x=a\b x = -0.6400 -0.3800 -0.5800 -0.3600 0.0814 1.4697 -0.2959 -0.7021 0.9883 1.0679 0.9748 0.7876 0.5752 -1.7738 0.2055 0.5972 >> x=[1 1.5 2 2.5 3 3.5 4 4.5 5]'; >> y=[-1.4 2.7 3 5.9 8.4 12.2 16.6 18.8 26.2]'; >> e=[ones(size(x)) x.^2]; >> c=e\y c = -1.0685 1.0627>> x1=[1:0.1:5]'; >> y2=[ones(size(x1)),x1.^2]*c;>> plot(x,y,'ro',x1,y2,'k')>> a=[2 4 7 4;9 3 5 6]; >> b=[8 5]'; >> x=pinv(a)*bx = -0.21510.44590.79490.2707>> x=0:0.02*pi:2*pi;>> y=sin(x);>> ymax=max(y)ymax = 1>> ymin=min(y)ymin = -1>> ymean=mean(y)ymean =2.2995e-017>> ystd=std(y)ystd =0.7071>> score=[90 80 78 98 79;100 90 68 78 69;88 77 99 87 100];>> score_sum=sum(score)score_sum = 278 247 245 263 248>> score_avg=score_sum/3.score_avg =92.6667 82.3333 81.6667 87.6667 82.6667>> score_max=max(score)score_max=100 90 99 98 100>>[score_max,score_max_student]=max(s core)score_max =100 90 99 98 100score_max_student = 2 2 3 1 3>> score_min=min(score)score_min = 88 77 68 78 69>>[score_min,score_min_student]=min(sc ore)score_min = 88 77 68 78 69score_min_studen t=3 3 2 2 2>> score_student_sum=sum(score) score_student_sum=278 247 245 263 248>>score_student_savg=score_student_sum. /3score_student_savg =92.6667 82.3333 81.6667 87.6667 82.6667>> std(score)ans =6.4291 6.8069 15.8219 10.0167 15.8219>> var(score)ans =41.3333 46.3333 250.3333 100.3333 250.3333>> x=linspace(0,2*pi,10)x =0 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888 4.8869 5.5851 6.2832>> y=sin(x)y=0 0.6428 0.9848 0.8660 0.3420 -0.3420 -0.8660 -0.9848 -0.6428 -0.0000>> dy=diff(y)dy=0.6428 0.3420 -0.1188 -0.5240 -0.6840 -0.5240 -0.1188 0.3420 0.6428>> d2y=diff(y,2)d2y= -0.3008 -0.4608 -0.4052 -0.1600 0.1600 0.4052 0.4608 0.3008>> d3y=diff(y,3)d3y= -0.1600 0.0556 0.2452 0.3201 0.2452 0.0556 -0.1600>> x=[1 2 3 4 5];>> y=[4 5 6 7 8];>> cx=cov(x)cx = 2.5000>> cy=cov(y)cy = 2.5000>> cxy=cov(x,y)cxy =2.5000 2.50002.5000 2.5000>> x=-1:0.2:1;>> z=exp(x.^2);>> fx=gradient(z)fx= -0.8218 -0.6425 -0.3615 -0.1963 -0.0868 0 0.0868 0.1963 0.3615 0.6425 0.8218function ex=ex(x)ex=exp(-x.^2)return>> format long>> quad('ex',0,1,1e-6)ex = 1.00000000000000 0.981730032806080.928898599395100.778800783071400.588254444230630.473852624646280.36787944117144ex = 0.99540087747802 0.95936125127772ex =0.86171221264734 0.68574192538547ex = 0.53040332078406 0.41944631668514ans = 0.74682418072642>> quadl('ex',0,1,1e-6)ex=1.000000000000000.999184727905840.991616959101330.968441445328330.926451851978820.864349866175970.778800783071400.682385279905670.592380095006350.509706301048790.438272262810980.389185953389380.36787944117144ex = 0.99161695910133 0.926451851978820.778800783071400.592380095006350.43827226281098ans = 0.74682413398845>> quad8('ex',0,1,1e-6) ex =1.00000000000000 0.999184727905840.991616959101330.968441445328330.92645185197882 0.86434986617597 0.778800783071400.682385279905670.592380095006350.509706301048790.438272262810980.389185953389380.36787944117144ex= 0.99161695910133 0.926451851978820.778800783071400.592380095006350.43827226281098ans = 0.74682413398845x0=0:pi/5:4*pi;y0=sin(x0).*exp(-x0/10);xi=0:pi/20:4*pi;yi=interp1(x0,y0,xi,'spline');plot(x0,y0,'or',xi,yi,'--b');Untitled2>> t=0:5:65;>> x=2:5:57;>>f=[3.1025,2.256,879.5,1835.9,2968.8,41 36.2,5237.9,6152.7,6725.3,6848.3,6403. 5,6824.7,7328.5,7857.6];>> f1=interp1(t,f,x)f1 = 1.0e+003 *0.002763900000000.353153600000001.262060000000002.289060000000003.435760000000004.576880000000005.603820000000006.381740000000006.774500000000006.670380000000006.571980000000007.02622000000000>> f2=interp1(t,f,x,'nearext') f2 = 1.0e+003 *0.003102500000000.002256000000000.879500000000001.835900000000002.968800000000004.136200000000005.237900000000006.152700000000006.725300000000006.848300000000006.403500000000006.82470000000000>> f3=interp1(t,f,x,'spline') f3 = 1.0e+003 *-0.170259056484550.306978324423981.256000890788642.269771808421483.439603875525464.589619889476705.637043766567756.422853844252316.859291256423016.653528330055636.481654623354457.04407557652658 >> f4=interp1(t,f,x,'cubic')f4 = 1.0e+003 *0.002438844000000.223194994900141.248358437730492.273647289639383.436483654858934.591276133775775.636234122067276.436239461848896.797756124209326.691730400000006.507716445924327.01855707680041[x,y,z]=peaks(6);mesh(x,y,z)[xi,yi]=meshgrid(-3:0.2:3,-3:0.2:3); z1=interp2(x,y,z,xi,yi,'nearest');z2=interp2(x,y,z,xi,yi,'linear');z3=interp2(x,y,z,xi,yi,'spline');z4=interp2(x,y,z,xi,yi,'cubic'); subplot(2,2,1)mesh(xi,yi,z1)title('nearest插值的网络图') subplot(2,2,2)mesh(xi,yi,z2)title('linear插值的网络图') subplot(2,2,3)mesh(xi,yi,z3)title('spline插值的网络图') subplot(2,2,4)mesh(xi,yi,z4)title('cubic插值的网络图')。
MATLAB第五章实验报告---matlab绘图陈录平工自03-1 030544103一,1,x=0:0.1:100;y=x-(x.*x.*x)/6;>> plot(x,y)2,>> x=0:0.1:200;>> y=exp(-(x.*x)/2)/(2*pi);>> plot(x,y)3,>> x=0:0.1:200;y=sqrt((64-x.*x)/2);>> plot(x,y)4,t=0:0.1*pi:2*pi;x=t.*sin(t);>> y=t.*cos(t);>> plot(x,y)二,t=0:0.01*pi:2*pi;x1=t;x2=sin(3.*t).*cos(t);y2=sin(3.*t).*sin(t);y1=2*x1-0.5;x=[x1;x2]';y=[y1;y2]';k=find(abs(y1-y2)<0.01);xi=x(k);yi=2*x1-0.5;plot(x,y,'k:',xi,yi,'bp')三,x=1:0.01:10;y=sin(1./x);>> plot(x,y)>> fplot('sin(1./x)',[1,10],0.001)四,t=(-pi):0.1*pi:pi;y=1./(1+exp(-t));subplot(2,2,1);bar(t,y,'g');title('bar(t,y,"g")');axis([0,7,-2,2]); subplot(2,2,2);stairs(t,y,'b');title('stairs(t,y,"b")');axis([0,7,-2, 2]);subplot(2,2,3);stem(t,y,'k');title('stem(t,y,"k")');axis([0,7,-2,2]); subplot(2,2,4);fill(t,y,'y');title('fill(t,y,"y")');axis([0,7,-2,2]); 五,1,t=0:pi/10:2*pi;r=5*cos(t)+4;>> polar(t,r,'-*');2,t=pi:pi/10:3*pi;r=12./sqrt(t);>> polar(t,r,'-*');3,t=-pi/3:pi/20:pi/3;>> r=5*sin(t).*sin(t)./cos(t);>> polar(t,r,'-*');4,t=-pi/6:pi/20:pi/6;r=3*sin(t).*cos(t)./(sin(t).*sin(t).*sin(t)+cos(t).*cos(t).*cos(t)); >> polar(t,r,'-*');六,1,t=0:pi/100:2*pi;x=exp(-t/20).*cos(t); y=exp(-t/20).*sin(t);z=t;plot3(x,y,z);title('line in 3-D Space');xlabel('X');ylabel('Y');zlabel('Z');grid on;2,t=0:0.001:1;>> x=t;>> y=t.*t;>> z=t.*t.*t;>> plot3(x,y,z);title('line in 3-D Space');xlabel('X');ylabel('Y');zlabel('Z');grid on;七1,[x,y]=meshgrid(-5:0.01:5);z=5;mesh(x,y,z);axis([-5 5 -5 5 0 5]); 2,[x,y]=meshgrid(-3:0.01:3);z=-5./(1+x.*x+y.*y);mesh(x,y,z);axis([-3 3 -3 3 -5 0]); 八[x,y,z]=sphere(50);m=moviein(30);for i=1:30surf(i*x,i*y,i*z)m(:,i)=getframe;endmovie(m,10);。
matlab实验心得总结在通过完成一系列的Matlab实验后,我对这个强大的数学计算软件有了更深入的认识。
通过这些实验,我不仅学到了如何使用Matlab进行数据处理和分析,还体会到了它在科学研究和工程应用中的广泛使用。
实验一:Matlab基础操作在第一次接触Matlab时,我首先学习了它的基本操作。
Matlab提供了友好的用户界面和丰富的命令工具,使得数据处理变得简单且高效。
在实验中,我学会了如何定义变量、进行基本的数学运算和使用矩阵操作等。
这些基础操作为后续的实验打下了坚实的基础。
实验二:数据可视化数据可视化在科学研究和工程领域中起着重要的作用。
在这个实验中,我学会了如何利用Matlab绘制各种图形,如折线图、散点图和柱状图等。
通过调整图形的样式和颜色,使得数据更加直观和易于理解。
同时,我还学会了如何添加标题、坐标轴标签和图例,使得图形具有更好的可读性。
实验三:模拟与仿真Matlab不仅可以进行数据处理和图形绘制,还可以进行模拟和仿真。
在这个实验中,我学会了如何使用Matlab进行数学模型的建立和仿真。
通过设定合适的参数和方程,我可以模拟出各种现实世界中的物理、生物和工程现象。
这对于科学研究和工程设计具有重要的意义。
实验四:信号处理信号处理是Matlab的一个重要应用领域。
在这个实验中,我学会了如何使用Matlab对信号进行分析和处理。
通过应用不同的滤波器,我可以去除信号中的噪声和干扰,提取出感兴趣的信息。
同时,我还学会了如何进行频域分析,通过傅里叶变换将信号转换到频率域,进一步分析信号的频谱特性。
实验五:数值计算Matlab还提供了强大的数值计算功能。
在这个实验中,我学会了如何使用Matlab进行数值计算和优化。
通过使用不同的数值求解方法,我可以解决复杂的数学方程和优化问题,得到精确的计算结果。
这对于科学研究和工程计算具有重要的价值。
总结起来,通过这些实验,我对Matlab的应用能力有了明显的提升。
实验一、MATLAB基本操作一、实验目的2.学习使用图形函数计算器命令funtool及其环境。
3. 学习使用help命令进行帮助4. 掌握向量与矩阵的创建以及矩阵的基本操作5. 掌握数组与矩阵的概念二、实验内容熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;掌握数组与矩阵的概念;学会使用help命令进行帮助;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool;1.命令窗口的简单使用(1)简单矩阵的输入(自由创建)x=[1 3 5;2 4 6]x =1 3 52 4 6(2)求[12+2×(7-4)]÷32的算术运算结果,总结算术运算符先级[12+2*(7-4)]/3^2ans =22.有关向量、矩阵或数组的一些运算(1)设A=15;B=20;求C=A+B与c=a+b的区别A=15;B=20;>> C=A+BC =35>> c=a+bUndefined function or variable 'a'.(2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与A.*B,分析原因?(A*B是两个矩阵相乘,A.*B是对应元素相乘)A=[1 2 3;4 5 6;7 8 9];B=[9 8 7;6 5 4;3 2 1];>> A*Bans =30 24 1884 69 54138 114 90>> A.*Bans =9 16 2124 25 2421 16 9(3)设a=10,b=20;求i=a/b与j=a\ba=10;>> b=20;>> i=a/bi =0.5000>> j=a\bj =2(4)设a=[1 -2 3;4 5 -4;5 -6 7]请设计出程序,分别找出小于0的矩阵元素的线性索引以及行列索引(sub2ind/ind2sub)。
matlab实验心得体会matlab实验心得体会范文导语:MATLAB意为矩阵工厂(矩阵实验室)。
是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
以下是小编带来的matlab实验心得体会,希望对您有所帮助。
matlab实验心得体会篇1自从20xx年xx月xx日开始接触MATLAB,已经三年多了。
当初花了一个月时间,才进入MATLAB的殿堂。
那时立下了一个小小的心愿,三年里做到与高手平等交流。
现在目标基本上实现了,却找不到前进的方向。
最近在做一些反思,希望能够总结一些经验和教训,对自己,对新来者有一些帮助。
也将我的想法分享给有共同爱好的朋友,感谢这一路走来,有那么多人相伴。
一、孤独的旅程二、学习经验三、网络新大陆四、第一届MATLAB研讨会五、英雄谱六、第二届MATLAB研讨会七、忙乱八、 MATLAB俱乐部九、遗憾十、蜕变一、孤独的旅程刚开始学习MATLAB,基本上都是靠自学。
有一位前辈培训了一次,但是时间还是太短了。
那个时候看到MATLAB,只知道是一个很陌生的软件,还是全英文环境。
看到的第一本书,还是一本紫皮的讲Simulink的书。
后来上书店去买了一本铁道出版社的书《MATLAB6.1程序设计与实例》,真是一本好书啊,现在还是我首选的MATLAB书,不时拿在手上翻翻。
通读了这本书,才对MATLAB的概念有所了解。
因为要在界面上显示一个图像,其他人用的是一个pushbutton的CData显示图像,还能用鼠标按来按去。
我记得MATLAB的对象结构上讲了image,后来就想办法用Image显示出来这个图像。
花了三天左右搞定,这是我用MATLAB解决的第一个问题,对自己的鼓动很大。
后来又利用空闲时间,做了一个三角函数的显示模块,原希望帮助初中生学习三角函数,一直没有机会,就此埋没了我的处女作。
再之后就是买书,看书,不看help,因为英文不好。
记得有一次,要写一个界面,按钮画好了,回调函数也写了,可是程序总是运行不通。
第五章思考与实验一思考题1在matlab数据处理中,数据序列是如何表示的?答:可以让矩阵的每列或每行代表不同的被测变量,相应的行或列的元素代表被测向量的观测值,这样就很容易通过对矩阵元素的访问进行数据的处理和分析。
2函数sum与cumsum有何区别?答:sum(A):如果A是一个向量,则返回向量各元素的和。
如果A是一个矩阵,则返回一个行向量,其第i个元素是A的第i列的元素和。
sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i 个元素是A的第i行的个元素之和。
cumsum(A):如果A是一个向量,则返回向量的累加和。
如果A是一个矩阵,则返回一个矩阵,其第i列是A的第i列的累加和向量。
cumsum(A,dim):当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第行是的第i行的累加和向量。
3利用randn函数生成符合正态分布的10*5随机矩阵A,写出完成下列操作的命令。
(1)A各列元素的均值和标准方差。
答:>> a=randn(10,5)a =1.3005 -1.3165 -0.5492 0.0601 -1.58090.2691 -0.6103 1.0014 0.0510 -1.0978-0.1551 0.4468 0.7482 0.7101 0.21030.0342 -2.4119 0.7242 -0.0953 -0.44560.9913 1.6895 0.7019 -1.2037 -0.2694-1.3618 -0.9683 0.8053 0.2633 -1.17210.9792 1.4889 -0.1651 -0.1608 0.1277-0.8863 -1.0166 -1.0022 -0.1653 1.0411-0.3562 -2.1758 0.5817 1.1027 1.2827-0.1428 -0.5737 2.1113 0.3762 0.3490>> mean(a)ans =0.0672 -0.5448 0.4957 0.0938 -0.1555>> std(a)ans =0.8480 1.3848 0.8756 0.6110 0.9440 (2)A的最大元素和最小元素。
答:>> max(max(a))ans =2.1113>> min(min(a))ans =-2.4119(3)求A每行元素的和以及全部元素之和。
答:>> sum(a,2)ans =-2.0860-0.38671.9604-2.19441.9096-2.43352.2698-2.02930.43522.1200>> sum(sum(a))ans =-0.4349(4)分别对A的每列元素按升序,每行元素按降序排序。
答:>> sort(a,1)ans =-1.3618 -2.4119 -1.0022 -1.2037 -1.5809-0.8863 -2.1758 -0.5492 -0.1653 -1.1721-0.3562 -1.3165 -0.1651 -0.1608 -1.0978-0.1551 -1.0166 0.5817 -0.0953 -0.4456-0.1428 -0.9683 0.7019 0.0510 -0.26940.0342 -0.6103 0.7242 0.0601 0.12770.2691 -0.5737 0.7482 0.2633 0.21030.9792 0.4468 0.8053 0.3762 0.34900.9913 1.4889 1.0014 0.7101 1.04111.3005 1.68952.1113 1.1027 1.2827>> sort(a,2,'descend')ans =1.3005 0.0601 -0.5492 -1.3165 -1.58091.0014 0.2691 0.0510 -0.6103 -1.09780.7482 0.7101 0.4468 0.2103 -0.15510.7242 0.0342 -0.0953 -0.4456 -2.41191.6895 0.9913 0.7019 -0.2694 -1.20370.8053 0.2633 -0.9683 -1.1721 -1.36181.4889 0.9792 0.1277 -0.1608 -0.16511.0411 -0.1653 -0.8863 -1.0022 -1.01661.2827 1.1027 0.5817 -0.3562 -2.17582.1113 0.3762 0.3490 -0.1428 -0.57374什么是数据插值?什么是曲线拟合?他们有何共同之处与不同之处?答:在工程测量和科学实验中,所得到的数据通常都是离散的。
如果要得到这些离散点意外的其他点的数值,需要根据这些已知数据进行估算。
曲线拟合的目的是用一个较简单的函数去逼近一个复杂的或未知的函数,所依据的条件都是在一个区间或一个区域上有限个采样点的函数值。
5在matlab中如何表示一个多项式?答:多项式的运算转换为系数向量的运算。
二实验题1利用matlab提供的rand函数生成30000个符合均匀分布的随机数,然后检验随机数的性质。
(1)均值和标准方差。
答:a=rand(1,30000);>> mean(a);>> std(a);>> mean(a)ans =0.4988>> std(a)ans =0.2890(2)最大元素和最小元素。
答:>> max(a)ans =1.0000>> min(a)ans =4.8345e-005(3)大于0.5的随机数个数占总数的百分比。
答:>> size(find(a>0.5))/size(a)ans =0.50062在某处测得海洋不同深度处水温数据如表中所示。
用插值法求出水深500m,900m和1500m 处的水温。
答:>> h=[466 715 950 1422 1635];t=[7.04 4.28 3.40 2.52 2.13];hx=[500 900 1500];tx=interp1(h,t,hx,'spline')tx =6.4903 3.5226 2.38453用5次多项式p(x)在区间[1,101]区间内逼近函数lgx,并绘制出lgx和p(x)在[1,101]区间的函数曲线。
答:>> x=linspace(1,10,50);y=log(x);f=polyfit(x,y,5);>> yy=polyval(f,x);>> plot(x,y,'r-',x,yy,'g.')1234567891000.511.522.54已知x(t)=e-t(t>=0),取N=64,对t 从0~5s 采样,用fft 作快速傅立叶变换,并绘制相应的振幅——频率图。
答:>> N=64;T=5;t=linspace(0,T,N);x=3*exp(-t);dt=t(2)-t(1);f=1/dt;X=fft(x);F=X(1:N/2+1);f=f*(0:N/2)/N;plot(f,abs(F),'-*')>> xlabel('Frequency');>> ylabel('|F(k)|') 012345670510152025303540Frequency |F (k )|5有3个多项式P1(x )=x2+2x2+7,P2(x)=x-2,P3(x)=x3+5x+1,试进行下列操作。
(1) 求P (x )=P1(x)+P2(x)+P3(x)。
(2) 求P(x)的根。
答:p1=[1 2 0 0 7];>> p2=[1 -2];p3=[1 0 0 5 1];>> p12=conv(p1,p2);>> p=p12+[zeros(1,size(p12,2)-size(p3,2)),p3];>> roots(p)ans =-2.1085 + 0.7978i-2.1085 - 0.7978i0.9717 + 1.0317i0.9717 - 1.0317i1.2735(3)设A=,当以矩阵A的每一元素为自变量时,求P(x)的值;当以矩阵A为自变量时,求P(x)的值。
答:>> a=[-1 4,3;2,1,5;0,5,6];>> px=polyval(p,a)px =-21 1059 23927 -3 3297-13 3297 8267>> pxm=polyvalm(p,a)pxm =3631 19933 308864934 25340 398466710 35820 557926求非线性方程的数值解。
(1)求3sinx-sinx+1=0在x0=0附近的根。
答:>> z=fzero('3*x-sin(x)+1',0)z =-0.4903(2)x2+y2=9,x+y=1 初值x0=3,y0=0。