Matlab基础与应用教程答案人民邮电出版社.doc_第1页
Matlab基础与应用教程答案人民邮电出版社.doc_第2页
Matlab基础与应用教程答案人民邮电出版社.doc_第3页
Matlab基础与应用教程答案人民邮电出版社.doc_第4页
Matlab基础与应用教程答案人民邮电出版社.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

第1章一、思考题4. (1) B=A(2:5,1:2:5)(2)A(7)=(3) A=A+30(4)size(A)(5) t(find(t=0)=eps(6)t=reshape(x,3,4)(7)abs(matlab)(8)char(93)5. A=97,67,34,10;-78,75,65,5;32,5,-23,-59;0,-12,54,7 (1) B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C(2)A(find(A=50 & A120 gz=dj*120+1.15*dj*(h-120);elseif h60 gz=dj*h-700;else gz=dj*h;endformat bank;display(gh,gz)3. 循环结构n=input(input n:);s=0;for k=1:n s=s+1/k2;enddisplay(sqrt(s*6)向量运算n=input(input n:);k=1:n;display(sqrt(sum(1./k.2)*6)4.y=0;k=0;while y=1e-5 & k500 x0=x; x=a/(b+x0); k=k+1;enddisplay(k,x);display(-b+sqrt(b2+4*a)/2,(-b-sqrt(b2+4*a)/2);6.y=fun(40)/(fun(30)+fun(20)(1)函数文件fun.mfunction f=fun(n)f=n+log(n2+5);(2)函数文件fun.mfunction f=fun(n)a=1:n;f=sum(a.*(a+1);第3章一、思考题4. t=0:0.01:1.5;y=sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*t+pi/3);5. x=-10:0.01:10;y=linspace(-6,6,size(x,2)z=x.3+3*x.*y.2;plot3(x,y,z)6. x=100:100:400;y=100:100:400;z=636,697,624,478;698,712,630,478;680,674,598,412;662,626,552,334;X,Y=meshgrid(x,y);mesh(X,Y,z)二、实验题1. (1)x=-10:0.01:10;plot(x,x-x.3/3/2)(2)plot(x,exp(-x.*x/2)/2/pi)(3)x=-8:0.01:8;plot(x,sqrt(64-x.*x)/2)(4)t=0:pi/100:6*pi;plot(t.*sin(t),t.*cos(t)2. (1)x1=linspace(0,1,100);y1=2*x1-0.5;t=linspace(0,pi,100);x=sin(3*t).*cos(t);y=sin(3*t).*sin(t);plot(x1,y1,r-,x,y,b:);text(0.4,1,y=2x-0.5);text(-0.4,0.5,x=sin(3t)cos(t);text(-0.4,0.3,y=sin(3t)sin(t);(2) subplot(1,2,1);scatter(x1,y1,10) title(y=2x-0.5);subplot(1,2,2);scatter(x,y,10)3. subplot(1,2,1); x=1:1:100; y=sin(1./x);plot(x,y)subplot(1,2,2);fplot(sin(1/x),1,100)4. subplot(2,2,1);bar(t,y);subplot(2,2,2);stairs(t,y);subplot(2,2,3);stem(t,y)subplot(2,2,4);semilogy(t,y);5. theta=linspace(-pi,pi,100);ro=5.*cos(theta)+4;polar(theta,ro);fi=linspace(0,2*pi,100);a=1r=a.*(1+cos(fi);polar(fi,r);6. t=0:pi/20:2*pi;x=exp(-t./20).*cos(t);y=exp(-t./20).*sin(t);z=t;plot3(x,y,z);t=0:0.01:1;x=t;y=t.2;z=t.3;plot3(x,y,z);7. x=-30:0.1:0;y=0:0.1:30;x,y=meshgrid(x,y);z=10.*sin(sqrt(x.2+y.2)./sqrt(1+x.2+y.2);meshc(x,y,z);8. x=linspace(-3,3,100);y=linspace(-3,3,100);x y=meshgrid(x,y);fxy=-5./(1+x.2+y.2);i=find(abs(x)=0.8 & abs(y)0.5)/size(A)2. h=466,715,950,1422,1635;w=7.04,4.28,3.40,2.52,2.13;hh=500,900,1500;ww=interp1(h,w,hh,spline)3. x=linspace(1,10,50);y=log(x);f=polyfit(x,y,5);yy=polyval(f,x);plot(x,y,r-,x,yy,g.)4. N=64; % 采样点数T=5; % 采样时间终点t=linspace(0,T,N); % 给出N个采样时间ti(I=1:N)x=3*exp(-t); % 求各采样点样本值xdt=t(2)-t(1); % 采样周期f=1/dt; % 采样频率(Hz)X=fft(x); % 计算x的快速傅立叶变换XF=X(1:N/2+1); % F(k)=X(k)(k=1:N/2+1)f=f*(0:N/2)/N; % 使频率轴f从零开始plot(f,abs(F),-*) % 绘制振幅-频率图xlabel(Frequency);ylabel(|F(k)|)5. (1)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)(2)A=-1,4,3;2,1,5;0,5,6;Px=polyval(p,A)Pxm=polyvalm(p,A)6.(1) z=fzero(3*x-sin(x)+1,0)(2) 建立函数文件myfun.mfunction F=myfun(X)x=X(1);y=X(2);F(1)=x*x+y*y-9;F(2)=x+y-1;在命令窗口中输入以下命令:x=fsolve(myfun,3,0,optimset(Display,off)第6章一、思考题2.fx=inline(1./(1+x.2);I,n=quad(fx,-100000,100000,1e-3);I,n=quadl(fx,-100000,100000,1e-3);x=-100000:0.01:100000;y=1./(1+x.*x);trapz(x,y);3.(1) fx=inline(-2*y+2*x*x+2*x);t,y=ode23(fx,0,0.5,1)(2) fx=inline(y-exp(x)*cos(x);t,y=ode23(fx,0,3,1)二、实验题1. for x=1:3 fx=x,x2,x3;1,2*x,3*x;0,2,6*x; diff(fx)end2.(1)x=0:0.01:1;y=x.10+10.x+1./log10(x);dy=diff(y)/0.01;(2)x=0:0.01:1;y=log(1+x);dy=diff(y,2)/0.01;plot(x(1:99),dy)3.(1)fx=inline(x.2.*sqrt(2*x.*x+3); quad(fx,1,5)(2)fx=inline(x./sin(x).2); quad(fx,pi/4,pi/3)(3)fx=inline(abs(cos(x+y); dblquad(fx,0,pi,0,pi)(4)syms x y;fx=x*y; int(int(fx,y2,y+2),-1,2)x的积分区间为【0,2】时fx=inline(x.*y); dblquad(fx,0,2,-1,2)4.x=0.3:0.2:1.5;y=0.3895,0.6598,0.9147,1.1611,1.3971,1.6212,1.8325;trapz(x,y)5.(1)yp=inline(-(1.2+sin(10*x)*y); t,y=ode23(yp,0,5,1); (2)令,则可写出原方程的状态方程形式: - 建立函数文件ztfun.mfunction y=ztfun(t,x)b=0;0;cos(t);y=0,1,0;0,0,1;-1/(3+sin(t),-1,5*cos(2*t)/(t+1)2*x+b;解微分方程组t,y=ode23(ztfun,0,5,1;0;2);6.建立函数文件ztfun.mfunction yy=ztfun(t,y)yy=y(2)*y(3);-y(1)*y(3);-0.51*y(1)*y(2);解微分方程组t,y=ode23(ztfun,0,5,0;1;1)第7章一、思考题3.(1)数值积分fx=inline(exp(x).*(1+exp(x).2);quad(fx,0,log(2)符号积分f=sym(exp(x)*(1+exp(x)2);v=int(f,0,log(2);eval(v)(2)略二、实验题1.A=sym(1,2,3;x,y,z;3,2,1)rank(A)inv(A)det(A)2.(1) y=sym(sqrt(x+sqrt(x+sqrt(x);y1=diff(y)y2=diff(y,x,2)(2) syms x y;fxy=sin(x2*y)*exp(-x2-y);diff(diff(fxy,x),y)3.(1) syms xint(1/(1+x4)(2) syms x tint(-2*x*x+1)/(2*x*x-3*x+1)2,x,cos(t),exp(2*t)4.syms n xsymsum(1/(2*n+1)/(2*x+1)(2*n+1),n,0,inf)symsum(1/(2*n+1)/(2*x+1)(2*n+1),n,0,5)5.(1) syms xtaylor(exp(x)+exp(-x)/2,5,0)(2) syms a xtaylor(exp(-5*x)*sin(3*x+pi/3),5,a)6.(1)x=solve(sym(x3+a*x+1=0)(2) x y=solve(sym(sqrt(x2+y2)-100=0,3*x+5*y-8=0)7. 方程转化为: 符号解y1,y11=dsolve(Dy=y1,Dy1+y=1-t2/pi,y(-2)=5,y1(-2)=5,t)数值解编写函数文件ztfun.mfunction yy=ztfun(t,y)yy=y(2);1-t2/pi-y(1);在命令窗口输入以下命令t,y=ode45(ztfun,-2,7,-5;5);t=linspace(-2,7,49)y2=y8. x,y=dsolve(Dx=3*x+4*y,Dy=-4*x+3*y,x(0)=0,y(0)=1)第9章二、实验题1.(1)新建一个Blank GUI。(2)在窗口上添加一个Static Text、一个Edit Text,一个Push Botton,两个Check Box,一组Radio Button。各控件的属性设置如表9.1所示。表9.1界面控件属性控 件属 性 名属 性 值静态文本框String实验一:编辑框String按钮String设置字体大小单选按钮1Stringred单选按钮2Stringyellow单选按钮3Stringblue单选按钮4StringblackValue1.0复选框1String倾斜复选框2String加粗(3)在按钮的Callback函数中添加以下代码:s=eval(get(handles.edit1,String);set(handles.text1,FontSize,s);(4)在复选框1的Callback函数中添加以下代码:if (get(hObject,Value) = get(hObject,Max) set(handles.text1,FontAngle,italic);else set(handles.text1,FontAngle,normal);end在复选框2的Callback函数中添加以下代码:if (get(hObject,Value) = get(hObject,Max) set(handles.text1,FontWeight,bold);else set(handles.text1,FontAngle,normal);end(5)在单选按钮组的SelectionChangeFcn函数中添加以下代码:set(handles.text1,ForegroundColor,get(eventdata.NewValue,string);2.(1)新建一个Blank GUI。(2)用菜单编辑器编辑菜单,各菜单项属性如表9.2.表9.2菜单项属性菜单项Label 属 性 值Tag 属 性 值MenuLineLabelm_lineHelpHelpm_helpLine Menu ItemLine StyleLine Stylem_linestyleLine WidthLine Widthm_linewidthLine ColorLine Colorm linecolorHelp Menu ItemAboutAboutm_about(3)绘图。在窗口的OpeningFcn函数添加以下代码:global h;t=0:0.01:6;h=plot(t.*sin(t),t.*cos(t)(4)在Line Style菜单项的Callback函数中添加以下代码:global h;set(h,LineStyle,-.);在Line Width菜单项的Callback函数中添加以下代码:global h;set(h,LineWidth,2);在Line Color菜单项的Callback函数中添加以下代码:global h;set(h,color,red);在About菜单项的Callback函数中添加以下代码:msgbox(Help Item);3.t=0:pi/20:6*pi;a=2;b=3;r=a+b*t;h_draw=polar(t,r,-*);h_menu=uicontextmenu; % %uimenu(h_menu,Label,red,Call,set(h_draw,Color,red););uimenu(h_menu,Label,yellow,Call,set(h_draw,Color,yellow););uimenu(h_menu,Label,blue,Call,set(h_draw,Color,blue););set(h_draw,UIContextMenu,h_menu); %4.(1)新建一个Blank GUI。(2)在窗口上添加三个Static Text、三个Edit Text,一个Push Botton,一个坐标轴对象Axes。各控件的属性设置如表9.3所示。表9.3界面控件属性控 件属 性 名属 性 值Static Texttext1Stringa:text1Stringb:text1Stringn:Edit Textedit1Stringedit2Stringedit3Stringpushbotton1String绘图Axes1width100height25(3)在按钮pushbutton1的Callback函数中添加以下代码:t=0:pi/20:6*pi;a=eval(get(handles.edit1,String);b=eval(get(handles.edit2,String);n=eval(get(handles.edit3,String);r=a.*cos(b+n.*t);polar(handles.axes1,t,r);第10章二、实验题1.建立模型exercise10_1.mdl(1)双击Gain模块,打开Function Block Parameters进行设置。设置完成后,单击模型编辑窗口的Start Simulation按钮,观察曲线。(2)选择Math Operation模块库的Slide Gain模块替代Gain模块2.略3. Scope的双输入实现方法:双击Scope模块,打开Scope示波器窗口,单击该窗口工具栏的Parameters 按钮(左数第二个),在打开的对话框的General选项卡的Numbers of axes:后的编辑框中输入2,然后单击OK按钮返回,即可看到模型中的Scope模块增加了一个输入口4.(1)先建立如下模型(2)建立子系统。选中除输入输出模块外其他模块,执行Edit菜单的Create Subsystem命令。(3)封装子系统。选中子系统模块,执行Edit菜单的Mask Subsystem命令。在Mask Editor对话框的Parameters选项卡中的Dialog Parameters栏内增加三个变量,单击OK按钮返回。5.(1)建立S函数subsection.mfunction sys,x0,str,ts=subsection(t,x,u,flag)switch flagcase 0 sys,x0,str,ts=mdlInitializeSizes; case 3 sys=mdlOutputs(t,x,u); case 1,2,4,9 sys=;otherwise error(Unhandled Flag, num2str(flag);end function sys,x0,str,ts=mdlInitializeSizes()sizes=simsizes;sizes.NumContStates=0; sizes.NumDiscStates=0; sizes.NumOutputs=1; sizes.NumInputs=1; sizes.DirFeedthrough=1; sizes.NumSampleTimes=1; sys=simsizes(sizes);x0=; str=; ts=-1,0; function sys=mdlOutputs(t,x,u)if u=0 & u=2 & u=5 & u=a & textall(n)=z textall(n)=char(textall(n)-(a-A); end m=textall(n)-A+1; ch(m)=ch(m)+1; endend4. (1)编辑c源程序exercise11_4.c,代码如下:#include #include /* For strcmp() */#include /* For EXIT_FAILURE, EXIT_SUCCESS */#include #include mat.h#define BUFSIZE 256#define k1 39#define k2 71 int main() MATFile *pmat; mxArray *pa1, *pa2, *pa3; double datak1k2; const char *file = mat11_4.mat; char strBUFSIZE; int status; int n1,n2; for(n1=0;n1k1;n1+) for(n2=0;n2k2;n2+) datan1n2=pow(n1+1.0)*(n2+1),1/3.0); printf(Creating file %s.nn, file); pmat = matOpen(file, w); if (pmat = NULL) printf(Error creating file %sn, file); printf(Do you have write permission in this directory?)n); return(EXIT_FAILURE); pa1 = mxCreateDoubleMatrix(k1,k2,mxREAL); if (pa1 = NULL) printf(%s : Out of memory on line %dn, _FILE_, _LINE_); printf(Unable to create mxArray.n); return(EXIT_FAILURE); pa2 = mxCreateDoubleMatrix(k1,k2,mxREAL); if (pa2 = NULL) printf(%s : Out of memory on line %dn, _FILE_, _LINE_); printf(Unable to create mxArray.n); return(EXIT_FAILURE); memcpy(void *)(mxGetPr(pa2), (void *)data, sizeof(data); pa3 = mxCreateString(MATLAB: the language of technical computing); if (pa3 = NULL) printf(%s : Out of memory on line %dn, _FILE_, _LINE_); printf(Unable to create string mxArray.n); return(EXIT_FAILURE); status = matPutVariable(pmat, LocalDouble, pa1); if (status != 0) printf(%s : Error using matPutVariable on line %dn, _FILE_, _LINE_); return(EXIT_FAILURE); status = matPutVariableAsGlobal(pmat, GlobalDouble, pa2); if (status != 0) printf(Error using matPutVariableAsGlobaln); return(EXIT_FAILURE); status = matPutVariable(pmat, LocalString, pa3); if (status != 0) printf(%s : Error using matPutVariable on line %dn, _FILE_, _LINE_); return(EXIT_FAILURE); memcpy(void *)(mxGetPr(pa1), (void *)data, sizeof(data); status = matPutVariable(pmat, LocalDouble, pa1); if (status != 0) printf(%s : Error using matPutVariable on line %dn, _FILE_, _LINE_); return(EXIT_FAILURE); mxDestroyArray(pa1); mxDestroyArray(pa2); mxDestroyArray(pa3); if (matClose(pmat) != 0) printf(Error closing file %sn,file); return(EXIT_FAILURE); pmat = matOpen(file, r); if (pmat = NULL) printf(Error reopening file %sn, file); return(EXIT_FAILURE); pa1 = matGetVariable(pmat, LocalDouble); if (pa1 = NULL) printf(Error reading existing matrix LocalDoublen); return(EXIT_FAILURE); if (mxGetNumberOfDimensions(pa1) != 2) printf(Error saving matrix: result does not have two dimensionsn); return(EXIT_FAILURE); pa2 = matGetVariable(pmat, GlobalDouble); if (pa2 = NULL) printf(Error reading existing matrix GlobalDoublen); return(EXIT_FAILURE); if (!(mxIsFromGlobalWS(pa2) printf(Error saving global matrix: result is not globaln); return(EXIT_FAILURE); pa3 = matGetVariable(pmat, LocalString); if (pa3 = NULL) printf(Error reading existing matrix LocalStringn); return(EXIT_FAILURE); status = mxGetString(pa3, str, sizeof(str); if(status != 0) printf(Not enough space. String is truncated.); return(EXIT_FAILURE); if (strcmp(str, MATLAB: the language of technical computing) printf(Error saving string: result has incorrect contentsn); return(EXIT_FAILURE); /* clean up before exit */ mxDestroyArray(pa1); mxDestroyArray(pa2); mxDestroyArray(pa3); if (matClose(pmat) != 0) printf(Error closing file %sn,file); return(EXIT_FAILURE); printf(Donen); return(EXIT_SUCCESS);(2)在MATLAB命令窗口输入以下命令编译(假定本机安装的编译器是Microsoft Visual Studio 2005)optsfile = matlabroot binwin32mexoptsmsvc80engmatopts.bat;mex(-f,optsfile,exercise11_4.c)(3)编译完成后,运行exercise11_4.exe5. (1)编辑c源程序exercise11_5.c,代码如下:#include #include #include #include engine.h#define BUFSIZE 256int main() Engine *ep; mxArray *X = NULL, *Y = NULL; char bufferBUFSIZE+1; double x100 ,y100; int n; for( n=0;n100;n+) xn=(n+1)/100.0;yn=(n+1)/100.0; if (!(ep = engOpen(0) fprintf(stderr, nCant start MATLAB enginen); return EXIT_FAILURE; X =

温馨提示

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

评论

0/150

提交评论