matlab编程训练_第1页
matlab编程训练_第2页
matlab编程训练_第3页
matlab编程训练_第4页
matlab编程训练_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、matlab训练建立一个脚本文件,用于两个变量值的互相交换。x=input('输入变量x=');y=input('输入变量y=');z=x;x=y;y=z;xy比较从键盘输入的两个数的大小,输出其中较大的数。(扩展,输出两个同型矩阵中对应位置较大的数)function y = ex2( x )a=input('输入数字x=');b=input('输入数字y=');if a>b fprintf('较大数为%dn',a)elseif a<b fprintf('较大数为%dn',b)elsee

2、ndend编写一个函数求一元二次方程的根,并编写测试脚本文件测试结果。function ex3a = input('请输入二次项系数: ');b = input('请输入一次项系数: ');c = input('请输入常数项: ');discriminant = b2 - 4 * a * c;if discriminant > 0x1 = (-b + sqrt(discriminant) / (2*a);x2 = (-b - sqrt(discriminant) / (2*a);fprintf('x1 = %fn', x1)

3、;fprintf('x2 = %fn', x2);elseif discriminant = 0 x1 = ( -b ) / (2*a);fprintf('x1 = x2 = %fn', x1);else real_part = (-b) / (2*a);imag_part = sqrt( abs(discriminant) / (2*a);disp('此方程无实根:');fprintf('x1 = %f + i %f n',real_part, imag_part);fprintf('x1 + %f - i %f n&#

4、39;, real_part, imag_part);end编写一个函数求圆的面积与周长,并编写测试脚本文件测试结果。function ex4r=input('请输入此圆的半径: ');S=pi*r;C=2*pi*r;fprintf('此圆的面积是:');disp(S)fprintf('此圆的周长是:');disp(C)编写一个函数用于求数n的阶乘(分别用循环与递归),再编写测试脚本文件求1!+2!+。+10!。function ex5_2n=input('请输入一个数:');N=sum(factorial(1:n);fprint

5、f('该数列的和为:')disp(N)编写脚本测试分段函数:clcclearx=input('输入x:');if x<1 p=1;elseif x>=1&x<2 p=2;else p=3;endswitch p case 1 y=x2; case 2 y=x2-1; otherwise y=x2-2*x-1;endfprintf('y=%fn',y);有函数,编写脚本文件测试该函数,x的值从键盘输入。x=input('x=');if x<2 y=2*exp(1)/x;elseif x>=2 y

6、=log(x*x-1);endfprintf('y=%fn',y);编写脚本文件,功能:从键盘输入一个字符,如果是大写字母,输出其后继字母;如果是小写字母,输出其前导字母,(Z的后继为A,a的前导为z);如果是数字字符,输出其ASCII码;其他字符原样输出。clcclearch=input('输入一个字符:','s');flag=1;if ch>='A'&ch<='Z' disp('为大写字母,后继字符为:'); ch=ch+1; if ch='Z'+1 ch=&

7、#39;A' endelseif ch>='a'&ch<='z' disp('为小写字母,前导字符为:'); ch=ch-1; if ch='a'-1 ch='z' endelseif ch>='0'&ch<='9' flag=0;else disp('为其他字符原样输出:');endif flag=1 fprintf('%sn',ch);else fprintf('为数字,其ASCII码为:%d

8、n',ch);end 某商场对顾客购买的商品总价打折,规则是500以下不打折,5001000的95折,10003000的9折,30005000的85折,5000以上8折。从键盘输入总价,分别用if语句和switch语句计算折扣,输出应付价。 x=input('商品总价为:');if x<=500 y=x; elseif x>500&x<=1000 y=0.95*x; elseif x>1000&x<=3000 y=0.9*x; elseif x>3000&x<=5000 y=0.85*x; else y=

9、0.8*x;endfprintf('应付价为:%dn',y);某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price<200 没有折扣 200price<500 3%折扣 500price<1000 5%折扣 1000price<2500 8%折扣 2500price<5000 10%折扣 5000price 14%折扣输入所售商品的价格,求其实际销售价格 。 x=input('商品总价为:');if x<200 y=x;elseif x>=200&x<500 y=0.9

10、7*x;elseif x>=500&x<1000 y=0.95*x;elseif x>=1000&x<2500 y=0.92*x;elseif x>=2500&x<5000 y=0.9*x;else y=0.86*x;endfprintf('应付价为:%dn',y);给出学生的百分制成绩,要求转化成成绩等级输出,等级分为优秀,良好,中等,及格90分以上的为优秀,80-89的为良好,70-79的为中等,60-69的为及格,其他为不及格。x=input('请输入学生的百分制成绩:');if x>=90

11、 y='优秀' elseif x>=80&x<90 y='良好'elseif x>=70&x<80 y='中等'elseif x>=60&x<70 y='及格'else y='不及格'endfprintf('该学生成绩等级为:');disp(y)编写一个函数,统计出一有序整形向量(按升序或降序排列)中不同等值整数组及对应的数据个数。function s,k=ex12(x) n=length(x); s1=x(1); s2=1; k=1; f

12、or i=2:n if x(i)=s1(k) s2(k)=s2(k)+1; else k=k+1; s1=s1;x(i); s2=s2;1; end ends=s1,s2; 编写一个函数,统计出一整形向量(可以是无序的)中不同等值整数组及对应的数据个数。function ex13( x )y=sort(x, 'ascend');num=length(y);yout=;count=1;disp(' 数据组 个数');for ii=1:num-1 if y(ii)=y(ii+1); count=count+1; continue; end yout=yout;y(i

13、i) count; count=1;endif y(num-1)=y(num) yout=yout;y(num) 1;else yout=yout;y(num) count;enddisp(yout); 求1+2+3+100的和。(分别用for和while语句实现)。function y = ex14ii=1;s=0;while ii<=100 s=s+ii; ii=ii+1;endsend随机生成一个20行10列的矩阵,分别求每行的和与每列的和。(不用sum函数。)A=-100+round(200*rand(10,20);disp(A') s=0;for k=A s=s+k;e

14、nddisp(s') s=0;for k=A' s=s+k;enddisp(s')随机生成一个20行10列的矩阵,分别求每行的和与每列的平均值。A=-100+round(200*rand(10,20);disp(A') s=0;for k=A s=s+k;ends=s/20;disp(s') s=0;for k=A' s=s+k;ends=s/10;disp(s')随机生成一个20行10列的矩阵,矩阵元素除以对应列的和形成新的矩阵。如果对应列的和为零,则新矩阵该列所有元素全为零。A=-100+round(200*rand(10,20);s

15、=sum(A);i=1;j=1;while j<=10a=s(i, j);if a=0; A(:,j)=0; else A(:,j)=A(i,:)/s(i, j); endj=j+1;enddisp(A')计算下面式子的和:ii=1;s1=0;while ii<=10 s1=s1+1ii; ii=ii+1;endjj=1;s2=0;while jj<=10 s2=s2+2jj; jj=jj+1;endkk=1;s3=0;while kk<=10 s3=s3+3kk; kk=kk+1;ends=s1+s2+s3一个三位整数各位数字的立方和等于该数本身则称该数为水仙

16、花数,输出全部水仙花数。function y = ex19ii=100;y=;while ii<=999 a=num2str(ii)-'0' if a(1)3+a(2)3+a(3)3=ii y=y ii; ii=ii+1; else ii=ii+1;endendy;end求100,200之间第一个能被21整除的整数。ii=100;while ii<=200 if mod(ii,21)=0 disp(ii) break else ii=ii+1; endend猜数游戏。 首先由计算机产生1,100之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同

17、提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏,用户最多可以猜7次。ii=1; a=fix(rand(1)*100);while ii<=8 if ii<=7 x=input('输入一个1到100之间的整数='); if x>a disp('High') ii=ii+1; elseif x<a disp('Low') ii=ii+1; else disp('You won') break end else disp('Game ov

18、er') break end end给定两个实数a、b,一个自然数n,求解当n=1,10时所有的(a+b)n和(a-b)n。function y = hechami( x )%UNTITLED Summary of this function goes here% Detailed explanation goes herea=input('输入一个实数a=')b=input('输入一个实数b=')n=1;c=;d=;while n<=10 s1=(a+b)n; c=c s1; s2=(a-b)n; d=d s2; n=n+1;end c dend

19、对于任意的正整数n,如果n是偶数则除以2,如果还是偶数再除以2,直至成为奇数。把这个奇数乘以3加1再除以2,如果是偶数继续除以2,直至成为一个新的奇数。然后再将这个奇数乘以3加1,按照同样的办法计算下去。经过若干次计算之后,最后的得数是1.num=input('输入任一正整数:');y=num;count=0;while 1 while 1 if rem(y,2)=0 break; end y=y/2; end if y=1 break; end count=count+1; y=(y*3+1)/2;endfprintf('%d经%d次大循环后:y=%dn',n

20、um,count,y);输出200以内的素数。function y = sushu( x )%UNTITLED2 Summary of this function goes here% Detailed explanation goes hereii=3;y=1 2;while ii<=200 jj=2; k=1; while jj<=ii-1 if mod(ii,jj)=0 k=0; jj=jj+1; else end end ii=ii+1; if k=1 y=y ii else endendyend 1、 输出200以内的素数。for m=1:200 i=2; while i

21、<m if m/i=fix(m/i) break end i=i+1; end if i>=m fprintf('%.0ft',m); end end2、 求100以内间隔为2 的素数对。例如3,5为一对,11,13为一对3、 求199中所有完全数。所谓完全数是指该数据出现在它的平方右边。例如5是完全数,25是完全数。4、 冒泡排序问题。5、 选择排序问题。6、 用函数文件求矩阵的最大值及所在位置。7、 用函数文件求矩阵的最小值及所在位置。8、 用函数文件判断素数,调用它求100200中所有素数。9、 斐波那契数列的递推式为:(1)编写函数文件(文件名为fib.m)

22、,求出斐波那契数列的第n项(2)编写测试脚本文件test.m,调用上面的函数fib输出斐波那契数列的前15项10、 编写脚本文件,实现功能:某整数的三次方是四位数,四次方是六位数,该四位数和六位数的各位数字正好是09这十个数字,求这个正整数。(提示:num2str可以将整数转换成数字字符,判断两个向量是否相同可以用函数isequal)。clearclca='0123456789'for n=10:21 b=;c=; d=n3; e=n4; while d f=mod(d,10); b=b,num2str(f); d=fix(d/10); end while e g=mod(e,

23、10); c=c,num2str(g); e=fix(e/10); end h=b,c; k=sort(h); if isequal(a,k) fprintf('n=%dn',n); break; endend11、 编写脚本文件,实现功能:从键盘输入任意个正整数(大于0),以0结束,统计这些数中奇数的个数并求奇数的和。12、 编写一脚本文件,求100,200之间第一个能被35整除的整数。13、 编写一脚本文件ex_38.m求解鸡兔同笼问题,从键盘输入头的数目headers和脚的数目foots,编程求解鸡的数目num_chick和兔的数目num_rabbit。>>&

24、#160;x,y = solve('x + y = 36','2*x+4*y = 100') x = 22  y = 1414、 编写一脚本文件求符号矩阵的秩、逆矩阵、行列式的值和特征根。15、 编写函数文件,求一个矩阵的最大值、最小值和平均值。矩阵的名字、行数、列数由函数中的参数控制(不能用标准函数max、min、mean)。function mi,row,col=marxmin(x,m,n)row=1;col=

25、1;mi=x(1,1);for i=1:m for j=1:n if x(i,j)<mi row=i; col=j; mi=x(i,j); end endendfprintf('%d %d %dn',mi,row,col);16、 已知常微分方程t为时间变量、u(t)为t=0时的单位阶跃函数、;将x(t)在50sec内的数值解仿真输出到workspace、编写脚本文件用plot函数画出。(提交两个文件)17、 用matlab仿真证明数学公式。(用示波器输出,提交一个文件)18、 用matlab仿真求下面常微分方程组的、t在闭区间0,20的数值解、仿真输出到workspac

26、e、编写脚本文件用plot函数画出。(提交两个文件)19、 初始条件为y1(0)=0、y2(0)=0.5、y3(0)=-0.5 。20、 下图为简单的RC电路、设us=+5伏直流电源;R=2欧姆;电容C=1法拉;在时间t=0时闭合开关s;电容上的初始电压uc(0)=0。根据基尔科夫定律并整理得:代入数值: 请用matlab仿真获得什么时候th电容上的电压为us的一半即:uc(th)=2.5伏。(要求使用stop,clk,display,及其它关系模块,满足电压要求后停止仿真、用display显示th值)。(提交一个文件)21、22、 在GUI中用不同的颜色和线形绘制sinx在-pi,pi的图形

27、。画图下:val=get(handles.popupmenu1,'Value');str=get(handles.popupmenu1,'String');c=strval;val1=get(handles.popupmenu2,'Value');str1=get(handles.popupmenu2,'String');d=str1val1;e=strcat(c,d);x=-pi:0.02:pi;y=sin(x);plot(x,y,e);23、 用GUI实现两个数据相加。24、 用GUI实现两个数据相减。减法:a=get(han

28、dles.edit1,'string');b=get(handles.edit2,'string');c=str2num(a)-str2num(b);set(handles.edit3,'string',num2str(c);清除:set(handles.edit1,'string',' ');set(handles.edit2,'string',' ');set(handles.edit3,'string',' ');25、 用GUI实现两个数据相乘

29、。26、 用GUI实现两个数据相除。27、 用GUI设计一个界面,输入姓名,选择性别,然后在下面的文本框中显示。28、 用GUI设计一个界面,输入姓名,选择爱好,然后在下面的文本框中显示。确定:t=get(handles.edit1,'string');if get(handles.checkbox1,'Value') a=get(handles.checkbox1,'String');else a=' 'endif get(handles.checkbox2,'Value') b=get(handles.chec

30、kbox2,'String'); else b=' 'endif get(handles.checkbox3,'Value') c=get(handles.checkbox3,'String'); else c=' 'endif get(handles.checkbox4,'Value') d=get(handles.checkbox4,'String'); else d=' 'endif get(handles.checkbox5,'Value')

31、e=get(handles.checkbox5,'String'); else e=' 'endif get(handles.checkbox6,'Value') f=get(handles.checkbox6,'String'); else f=' 'endg=strcat(a,b);h=strcat(c,d);i=strcat(e,f);j=strcat(g,h);k=strcat(j,i);m=strcat(t,k);set(handles.edit3,'String',m);清除:set(h

32、andles.edit1,'string',' ');set(handles.edit3,'string',' ');set(handles.checkbox1,'value',0);set(handles.checkbox2,'value',0);set(handles.checkbox3,'value',0);set(handles.checkbox4,'value',0);set(handles.checkbox5,'value',0);set(

33、handles.checkbox6,'value',0);radiobutton1:set(handles.radiobutton1,'value',1);set(handles.radiobutton2,'value',0);radiobutton2:set(handles.radiobutton1,'value',0);set(handles.radiobutton2,'value',1);29、 用GUI编写下拉框界面。下拉框中包含:小学、初中、高中、专科、本科、研究生。30、 用GUI编写列表框界面。列表框

34、中包含:小学、初中、高中、专科、本科、研究生。确定:t=get(handles.edit1,'string');val=get(handles.popupmenu1,'Value');str=get(handles.popupmenu1,'String');c=strval;m=strcat(t,c);set(handles.edit3,'String',m);清除:set(handles.edit1,'string',' ');set(handles.edit3,'string',

35、' ');Radiobutton1:set(handles.radiobutton1,'value',1);set(handles.radiobutton2,'value',0);Radiobutton2:set(handles.radiobutton1,'value',0);set(handles.radiobutton2,'value',1);31、 双界面的切换。第一个窗口中输入姓名,选择性别,点“确定”后在第二个窗口中显示结果。第二个窗口中点“返回”则回到第一个窗口。男:set(handles.radiob

36、utton1,'value',1);set(handles.radiobutton2,'value',0);女:set(handles.radiobutton1,'value',0);set(handles.radiobutton2,'value',1);确定:global c;a=get(handles.edit1,'string');if get(handles.radiobutton1,'value') b=get(handles.radiobutton1,'String');

37、elseif get(handles.radiobutton2,'value') b=get(handles.radiobutton2,'String');endc=strcat(a,b);lixi38('visible','off');lixi38_1('visible','on');清除:set(handles.edit1,'string',' ');set(handles.radiobutton1,'value',0);set(handles.radiobutton2,'value',0);第二个窗口返回:lixi38_1('visible','off');lixi38('visible','on');显示结果:global c;set(handles.edit1,'string',c);% Update handles structureguidata(hObject, handles);32、 在第1个子窗口用极坐标画图显示r=0.5(1+cos()),其中0,2;在第2个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论