为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

matlab上机习题详解_试题答案

2017-09-28 50页 doc 428KB 247阅读

用户头像

is_769254

暂无简介

举报
matlab上机习题详解_试题答案matlab上机习题详解_试题答案 clc clear P第一次实验答案 x=-2*pi:0.1: 2*pi; 3,,,y=cos(x).*(0.5+sin(x)*3./(1+x.^2)); ,4tsin43y,,et,,, 1( 设 plot(x,y,'b*-'); 23,,title('绘图'); xlabel('x坐标'); 要求以0.01秒为间隔,求出y的151个点,ylabel('y坐标'); 并求出其导数的值和曲线。 legend('原函数') clc gtext('y=cos(x)(0.5+3*sin(x)...
matlab上机习题详解_试题答案
matlab上机习题详解_试题答案 clc clear P第一次实验答案 x=-2*pi:0.1: 2*pi; 3,,,y=cos(x).*(0.5+sin(x)*3./(1+x.^2)); ,4tsin43y,,et,,, 1( 设 plot(x,y,'b*-'); 23,,title('绘图'); xlabel('x坐标'); 要求以0.01秒为间隔,求出y的151个点,ylabel('y坐标'); 并求出其导数的值和曲线。 legend('原函数') clc gtext('y=cos(x)(0.5+3*sin(x)/(1+x^2))') clear x=0:0.01:1.5; y=sqrt(3)/2*exp(-4*x).*sin(4*sqrt(3)*x+pi/35、求下列联立方程的解 ) 3x,4y,7z,12w,4y1=diff(y) subplot(2,1,1) 5x,7y,4z,2w,,3 plot(x,y) x,8z,5w,9subplot(2,1,2) plot(x(1:150),y1) ,6x,5y,2z,10w,,8 clc clear 2绘制极坐标系下曲线(a,b,n自定数据) a=[3,4,-7,-12;5,-7,4,2;1,0,8,-5;-6,5,-2,10] ; ,,,,acosb,n, b=[4,-3,9,-8]; clc c=b/a; clear x=c(1,1) a=10; y=c(1,2) b=pi/2; z=c(1,3) n=5; w=c(1,4) theta=0:pi/100:2*pi; rho=a*cos(b+n*theta); 6. 假设一曲线数据点为 polar(theta,rho) x = 0:2:4*pi; y = sin(x).*exp(-x/5); 3. 列出求下列空间曲面交线的程序 试将x 的间距调成 0.1,采用不同插值方法进行 22z,2x,3yz,x,2y2插值,并通过子图的形式将不同插值结果和原始数1 据点绘制在同一图形窗口。 clc clear clc x=[-5:0.5:5]; clear [X,Y]=meshgrid(x); x=0:2:4*pi; z1=X.^2-2*Y.^2; y=sin(x).*exp(-x./5); z2=X.*2-Y.*3; x1=0:0.1:4*pi; xlabel('x') y01=interp1(x,y,x1,'spline'); ylabel('y') y02=interp1(x,y,x1,'cubic'); zlabel('z') y03=interp1(x,y,x1,'nearest'); surf(X,Y,z1) y04=interp1(x,y,x1); hold on subplot(3,2,1); surf(X,Y,z2) plot(x,y,'o-'); k=find(abs(z1-z2)<0.5); title('Ô,º?Êý'); x1=X(k) subplot(3,2,2); y1=Y(k) plot(x1,y01,'gx-'); z3=x1.^2-2*y1.^2 title('spline'); hold on subplot(3,2,3); plot3(x1,y1,z3,'*') plot(x1,y02,'m+-'); title('cubic'); subplot(3,2,4); ,,x3sinplot(x1,y03,'r*-'); yx,cos0.5,4、设 ,,2(1,x)title('nearest'); ,,subplot(3,2,5); 把x=0~2π间分为101点,画出以x为横坐标,yplot(x1,y04,'kd-'); title('line'); 为纵坐标的曲线,要求有图形标注。 str='-b'; 第二次试验答案 case 3 ; 1、编制m文件,等待键盘输入,输入密码 otherwise error('输入量太多。'); 20120520,密码正确,显示输入密码正确,程end; t=0:2*pi/N:2*pi; 序结束;否则提示,重新输入。 x=R*sin(t);y=R*cos(t); if nargout==0 plot(x,y,str); clear elseif nargout>2 a=input('输入密码:') error('输入量太多。'); while a~=20120520 else disp('密码错误,请重新输入:') S=N*R*R*sin(2*pi/N)/2; clear L=2*N*R*sin(pi/N); a=input('输入密码:') plot(x,y,str) end end if a==20120520 axis equal square disp('密码输入正确!') box on end 3、编写一个学生成绩管理的程序,完成下列2、编写一个函数实现以下功能: 功能: a. 若没有实参输入变量,则用蓝色实线画出(1) 构造一个学生结构,包括学生的姓名,课半径为1的圆; 程名称(限M门),考试成绩和平均值等域; 若有两个实参输入变量N,R,则用蓝色实b.(2) 从键盘上,连续输入N个学生的情况,分线画出外接半径为R的正N多边形; 别将这些学生的情况填入到相应的域,若域中d. 若有两个实参输出变量,则分别输出正多没有值即为空或0,并分别计算其平均值写入边形的面积S和周长L。 到其平均值域。 g. 如果输入变量多于三个或输出变量多于两(3) 根据平均值排序(由高到低),并输出学个则给出错误提示信息。 生的姓名和平均值。 (提示:外接半径为R的正N多边形参数 clc 式:t=0:2*pi/N:2*pi;x=R*sin(t);y=R*cos(t)当Nclear n=input('please input students number:'); for x=1:n ?100时,可看作是半径为R的圆) number(x)=struct('name','','Curriculum1','' ,'Curriculum2','','Curriculum3','','Averagefunction [S,L]=shiyan22(N,R,str) ',''); end for i=1:n switch nargin number(i).name=input('name:','s'); case 0 number(i).Curriculum1=input('please N=100;R=1;str='-b'; input the scores\nCurriculum1:'); case 1 R=1;str='-b'; number(i).Curriculum2=input('Curriculum2:') ; case 2 set(h_1,'linewidth',2) number(i).Curriculum3=input('Curriculum3:')set(get(h_t,'parent'),'color','y') ; h_anm1=annotation(gcf,'rectangle',[0.1 0.5 .8 number(i).Average=(number(i).Curriculum1+nu0.4],'FaceAlpha',.7,'FaceColor','red') mber(i).Curriculum2+number(i).Curriculum3)/ 3; disp('the average is:') disp(num2str(number(i).Average)) 第三次试验答案 end NameCell=cell(1,n); 1、做一个带按钮的界面,当按动“播放”按Array=[1,n]; for i=1:n 钮时调入声音文件并播放,显示声音波形,并 NameCell(1,i)={number(i).name}; Array(i)=number(i).Average; 建立一个用于关闭界面的按钮对象。(提示,end for j=1:(n-1) iptr = j; 找一个.wav文件,简单起见可以在windows for i=(j+1):n if Array(i)>Array(iptr) %比较相邻前后目录下找一个文件,将其放在当前工作目录下大小? iptr=i; 或搜索路径上。具体用法请参照: end end [y,f,b]=wavread(*.wav'); % 读入声音文 if j~=iptr %若后面比前面大, 互换 件 Name=NameCell(1,i); NameCell(1,i)=NameCell(1,j); sound(y,f,b) % 由声卡播放 NameCell(1,j)=Name; average=Array(i); 声音 Array(i)=Array(j); Array(j)=average; plot(y) % 画出波形 j=1; iptr=j; end end disp('成绩排序如下:') for i=1:n disp(strcat('名次: ',num2str(i),' 名字 2、创建一个用于绘图参数选择的菜单对象,',NameCell(1,i),' 平均成绩: ',num2str(Array(i)))) 其中包含三个选项LineStyle、Marker和Color,end 每个选项下面又包含若干的子项分别可以进 -0.5x4、使用句柄图像对象绘制曲线:y=2ecos(π行选择图线的类型、标记点的类型和颜色 (每 x),同时对曲线进行标注和修饰。 个子项不少于3个),当按下“绘图”按钮时, 根据选项绘制正弦曲线(缺省时为蓝色无标记x=-12:0.02:12 y=2*exp((-0.5)*x).*cos(pi*x) 实线)。(注意使用全球变量) h_f=figure('Position',[200 300 300 300],'menubar','none') function varargout = shiyan32(varargin) h_a1=axes('position',[0.1,0.1,.8,.8]) % SHIYAN32 MATLAB code for shiyan32.fig h_t=title(h_a1,'函数 =2*exp((-0.5)*x).*cos(pi*x)') % Begin initialization code - DO NOT EDIT h_1=line(x,y) gui_Singleton = 1; set(gca,'xtick',[(-6)*pi (-4)*pi (-2)*pi 0 gui_State = struct('gui_Name', (2)*pi (4)*pi (6)*pi]) mfilename, ... set(gca,'xticklabel',{'(-6)*pi',' (-4)*pi', 'gui_Singleton', '(-2)*pi', '0', '(2)*pi', '(4)*pi','(6)pi'}) gui_Singleton, ... set(gca,'xgrid','on','ygrid','on') 'gui_OpeningFcn', @shiyan32_OpeningFcn, ... % Get default command line output from handles 'gui_OutputFcn', structure @shiyan32_OutputFcn, ... varargout{1} = handles.output; 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) % gui_State.gui_Callback = -------------------------------------------str2func(varargin{1}); ------------------------- end function Untitled_1_Callback(hObject, eventdata, handles) if nargout % hObject handle to Untitled_1 (see GCBO) [varargout{1:nargout}] = % eventdata reserved - to be defined in a gui_mainfcn(gui_State, varargin{:}); future version of MATLAB else % handles structure with handles and user gui_mainfcn(gui_State, varargin{:}); data (see GUIDATA) end global l % End initialization code - DO NOT EDIT % % --- Executes just before shiyan32 is made -------------------------------------------visible. ------------------------- function shiyan32_OpeningFcn(hObject, function Untitled_8_Callback(hObject, eventdata, handles, varargin) eventdata, handles) % This function has no output args, see % hObject handle to Untitled_8 (see GCBO) OutputFcn. % eventdata reserved - to be defined in a % hObject handle to figure future version of MATLAB % eventdata reserved - to be defined in a % handles structure with handles and user future version of MATLAB data (see GUIDATA) % handles structure with handles and user data (see GUIDATA) global m % varargin command line arguments to % shiyan32 (see VARARGIN) ------------------------------------------- ------------------------- % Choose default command line output for function color_Callback(hObject, eventdata, shiyan32 handles) handles.output = hObject; % hObject handle to color (see GCBO) % eventdata reserved - to be defined in a % Update handles structure future version of MATLAB guidata(hObject, handles); % handles structure with handles and user data (see GUIDATA) % UIWAIT makes shiyan32 wait for user response global c (see UIRESUME) % % uiwait(handles.figure1); ------------------------------------------- ------------------------- global c function Untitled_14_Callback(hObject, c='b' eventdata, handles) % hObject handle to Untitled_14 (see GCBO) global l % eventdata reserved - to be defined in a l='-' future version of MATLAB % handles structure with handles and user global m data (see GUIDATA) m=' ' global c % --- Outputs from this function are returned c='r' to the command line. function varargout = % shiyan32_OutputFcn(hObject, eventdata, -------------------------------------------handles) ------------------------- % varargout cell array for returning output function Untitled_15_Callback(hObject, args (see VARARGOUT); eventdata, handles) % hObject handle to figure % hObject handle to Untitled_15 (see GCBO) % eventdata reserved - to be defined in a % eventdata reserved - to be defined in a future version of MATLAB future version of MATLAB % handles structure with handles and user % handles structure with handles and user data (see GUIDATA) data (see GUIDATA) % handles structure with handles and user global c data (see GUIDATA) c='b' % global m ------------------------------------------- ------------------------- m='d' function Untitled_16_Callback(hObject, % eventdata, handles) -------------------------------------------% hObject handle to Untitled_16 (see GCBO) ------------------------- % eventdata reserved - to be defined in a function Untitled_4_Callback(hObject, future version of MATLAB eventdata, handles) % handles structure with handles and user % hObject handle to Untitled_4 (see GCBO) data (see GUIDATA) % eventdata reserved - to be defined in a future version of MATLAB global c % handles structure with handles and user c='g' data (see GUIDATA) % global l ------------------------------------------- ------------------------- l='-' function Untitled_17_Callback(hObject, % eventdata, handles) -------------------------------------------% hObject handle to Untitled_17 (see GCBO) ------------------------- % eventdata reserved - to be defined in a function Untitled_5_Callback(hObject, future version of MATLAB eventdata, handles) % handles structure with handles and user % hObject handle to Untitled_5 (see GCBO) data (see GUIDATA) % eventdata reserved - to be defined in a future version of MATLAB global c % handles structure with handles and user c='y' data (see GUIDATA) % global l ------------------------------------------- ------------------------- l='--' function Untitled_10_Callback(hObject, % eventdata, handles) -------------------------------------------% hObject handle to Untitled_10 (see GCBO) ------------------------- % eventdata reserved - to be defined in a function Untitled_7_Callback(hObject, future version of MATLAB eventdata, handles) % handles structure with handles and user % hObject handle to Untitled_7 (see GCBO) data (see GUIDATA) % eventdata reserved - to be defined in a future version of MATLAB global m % handles structure with handles and user m='o' data (see GUIDATA) % global l ------------------------------------------- ------------------------- l='-.' function Untitled_11_Callback(hObject, % --- Executes on button press in pushbutton1. eventdata, handles) function pushbutton1_Callback(hObject, % hObject handle to Untitled_11 (see GCBO) eventdata, handles) % eventdata reserved - to be defined in a % hObject handle to pushbutton1 (see GCBO) future version of MATLAB % eventdata reserved - to be defined in a % handles structure with handles and user future version of MATLAB data (see GUIDATA) % handles structure with handles and user data (see GUIDATA) global m global s m='*' % global l -------------------------------------------global m ------------------------- function Untitled_13_Callback(hObject, global c eventdata, handles) x=0:0.1:2*pi; % hObject handle to Untitled_13 (see GCBO) % eventdata reserved - to be defined in a y=sin(x); future version of MATLAB end s=strcat(l,m,c); for i=1:10 plot(x,y,s) for j=1:10 t1=0;t2=0;t3=0; for k=1:3 A,(a)B,(b)2. 设和是两个10行10列ij10,10ij10,10 t1=t1+(x(i,k)-xbar(i))*(x(j,k)-xbar(j)); 的矩阵(数组),试说明命令A*B, A/B, A\B, t2=t2+(x(i,k)-xbar(i))^2; A.*(B.^A), A./B, A.\B和sin(A).*exp(B)的涵义。 t3=t3+(x(j,k)-xbar(j))^2; end A,B的矩阵乘法,矩阵A乘以B的逆,矩阵B乘以A的 r2(i,j)=t1/sqrt(t2*t3); 逆,B的每个元素的对应A次幂乘以A对应的每个元素 end A的每个元素除以B对应的每个元素,B的每个元素除以end A对应的每个元素, r2 A的每个元素的正弦与B对应的每个元素的指数求积, 2. (1) Using plot() function to plot the curves of sinx,2x z, and yxx,,[sin(2)cos3]ex1417,3. 设A为数组,B为一个行数大于3的数组,请 给出 in the range of , let their color are red and x,,2,2,,,, (1)删除A的第4、8、12三列的命令; (2)删除Bgreen respectively, and add the grid to the figure. 的倒数第3行的命令; (2) Using fplot() function and ezplot() function to plot above-mentioned (上述的) curves respectively. tan()mx(3)求符号极限lim的命令集; (4)求(1)x=-2*pi:pi/100:2*pi; x,0nxy=(sin(2*x)+cos(3*x)).*exp(-2*x); x,3,2xz=sin(x)/x; 的3阶导数的命令集;(5)ye,,,arctanln(1)x,2plot(x,y,’r’,x,z,’g’) 1(2)fplot('[(sin(2*x)+cos(3*x)).*exp(-2*x), 2(sin)xxxdx,的命令,并给出计算结果 计算定积分,,sin(x)/x]',[-2*pi 2*pi]) 1 (!)A(:,[4 8 12])=[] (2)B(end-2)=[] 3. Plot the 3D mesh figure and 3D surface figure of the (3)syms m n x function 22 2/2(1),,,xy fxyx(,)9(1)e,,limit(tan(m*x)/(n*x)) ,,,44xin the range of and , respectively. ,,,44y(4)syms x y y=atan((x+3)/(x-2))-log(1+exp((-2)*x) x=-4:1/100:4; diff(y,3) y=-4:1/100:4; (5)syms x z=9(1-x)^2*exp(-x’^2/2-(y’+1)^2) int((abs(x)+sin(x))*x^2,-1,1) mesh(x,y,z); surf(x,y,z); 三(基本编程题(每小题10分,共 得分 30分) 得分 四(综合编程题(每小题11分,1. Write a program to compute the following expressions 共22分) 10 1. Write a function program to compute the following ()()xxxx,,,ikijkjfunction ,k1?rij,,,,,1,2,,10ij21010|2|!,()ixi,整数,2f1(x)3,, ()()xxxx,,1.8,,ikijkj4sin(2),xx,其他,,,kk11 ; and call this function program to compute the value of Here, we suppose the variable x has existed in the workspace. y=f1(-4)+f1(3)-f1(14.37) in main program or ||!icommand window, there, shows the factorial (阶乘) of for i=1:10 ||i. for j=1:10 xbar(i)=xbar(i)+x(i,j); 提示:对x取整的函数有fix(x), floor(x), round(x) 和 end ceil(x) . xbar(i)=xbar(i)/10; fuction y=f1(x) %f1.m if x-fix(x)= =0 存数组编辑器、M文件编辑/调试器、帮助导航/浏览器、y=prod(1:abs(2*x)); 图形窗口等。 else 2、MATLAB中Inf或inf表示 无穷大 、NaNy=4*sin(2*x)+x^1.8; 或nan表示 不是一个数 、nargout表示 函数输出变量y=f1(-4)+f1(3)-f1(14.37) 数目 。 2.Write a program to compute the sample mean 3、工作空间浏览器主要用于内存变量的 查阅 、 保持 n1和 编辑 。 xxxbar==, ,i4、MATLAB实现将全下标转换为单下标的指令为 n,1i sub2ind 、据单下标换算出全下标的指令为 and the sample skewness (偏度) ind2sub 。 n135、MATLAB中clf用于 清除图形窗口 、clc用于 清,,xxske() . ,in,1i除指令窗口中显示内容 、clear用于 清除MATLAB工for the following three case: 作空间中保存的变量 。 二、简答题(每题5分,共20分) x,[x,x,?,x](1) n and exist in Workspace of 12n 1、简述MATLAB历史指令窗的主要作用。 Matlab. It is no any limit; 答:历史指令窗记录着用户在MATLAB指令窗中所输入x,[x,x,?,x](2) n and are unknown variables. 12n过的所有指令。历史记录包括:每次开启MATLAB的时Please input x by keyboard one by one, and give a mark of 间,每次开启MATLAB后在指令窗中运行过的所有指令。end the data input. Examinees can use loop statement and 应用功能有单行或多行指令的复制和运行、生成M文件length() function and input() function, but cannot use mean() 等。 function, std() function, and var() function directly (可以使2、简述MATLAB函数的基本结构。 用循环语句和length()函数、input()函数等进行编程,但不答:典型M函数文件的结构:函数申明行、H1行、在线能直接使用mean()、std()和var()等函数). 帮助文本区、编写和修改记录、函数体。 (1)s=0; 3、简述绘制二维图形的一般步骤。 for i=1:n s=s+x(i); 绘制二维图形的一般步骤为:曲线数据准备、选定图形窗end 及子图位置、调用二维曲线绘图指令、设置轴的范围、坐xbar=s/n 标分格线、图形注释、图形的精细操作。 m=0; 三、阅读程序并回答问题(每题4分,共28分) for i=1:n 1、写出下列指令运行结果。 m=m+(x(i)-xbar)^3; A=zeros(2,4); end A(:)=1:8; ske=m/n s=[2 3 5]; (2)x(1)=input('请输入x '); A(s) i=1;s=0; Sa=[10 20 30]' while(x(i)~='a') A(s)=Sa s=s+x(i); ans = i=i+1; 2 3 5 x(i)=input('请输入x ,输’a’结束'); Sa = end 10 xbar=s/(i-1) 20 m=0; 30 for j=1:i-1 A = m=m+(x(i)-xbar)^3; 1 20 30 7 end 10 4 6 8 ske=m/(i-1) 2、写出下列指令运行结果。 A=reshape(1:16,2,8) reshape(A,4,4) s=[1 3 6 8 9 11 14 16]; A(s)=0 A = 1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16 ans = 一、填空题 1 5 9 13 2 6 10 14 1、MATLAB常用操作界面包括 命令窗口 、工作 3 7 11 15 空间窗口、 命令历史窗口 、当前目录窗口 、内 4 8 12 16 A = A{1,2}{1} = 0 0 5 7 0 0 13 1 2 3 15 4 5 6 2 4 0 0 10 12 0 A{2,2} = 0 7 8 9 10 11 12 3、写出下列指令运行结果。 A=[1,2;3,4]; 7、下面的程序完成功能是什么, B=[-1,-2;2,1]; S=3; t=0:pi/50:4*pi; A.*B y0=exp(-t/3); ans = y=exp(-t/3).*sin(3*t); -1 -4 plot(t,y,'-r',t,y0,':b',t,-y0,':b') 6 4 xlabel(‘\bf\it t’); A*B ylabel(‘\bf\it y’); ans = grid on; 3 0 绘制图形如下: 5 -2 S.*A 四、编程题(32分) 2ans = 1、用命令来创建GUI并绘制方程y=ax +bx+c图形,需 3 6 要显示绘图结果的坐标系窗口,还能输入a、b、c的值和 9 12 x的取值范围,同时用命令设置所以对象的属性。 S*B ans = -3 -6 6 3 2、在同一图上分别用红色实线和绿色虚线绘制4、下面的函数主要完成什么功能, y1=sin(x)和y2=cos(x)在区间[0,4*pi]的曲线,并用 function f=factor(n) 星号*标出两条曲线的交点以及建立图例。(5分) if n<=1 x=0:0.01:4*pi; f=1; y1=sin(x); else y2=cos(x); f=factor(n-1)*n; z=find(abs(y1-y2)<0.007); end plot(x,y1,'r.-','Linewidth',2,'Markersize',1); 利用函数的递归调用求n! axis([-1.5,15,-1.5,1.5]); 5、写出下列指令运行结果。 hold on ch=‘ABc123d4e56Fg9’; plot (x,y2,'g.:','Linewidth',2,'Markersize',1); subch=ch(1:5) n=size(z); revch=ch(end:-1:1) plot(x(z),y1(z),'k*','Markersize',15); k=find(ch>=‘a’&ch<=‘z’); ch(k)=ch(k)-(‘a’-‘A’); char(ch) 3、某商场对顾客所购买的商品实行打折销售, 如下(商品价格用price来表示): subch = price<200 没有折扣 ABc12 revch = 200?price<500 3%折扣 9gF65e4d321cBA 500?price<1000 5%折扣 ans = 1000?price<2500 8%折扣 ABC123D4E56FG9 2500?price<5000 10%折扣 ans = 5000?price 14%折扣 4 输入所售商品的价格,求其实际销售价格。(5分) 6、写出下列指令运行结果。 A(1,1)={'this is cell'}; price=input('please input your price:'); A{1,2}={[1 2 3;4 5 6]}; a=0; A{2,1}=[1+2*i]; if price<200 A{2,2}=A{1,2}{1}+(A{1,2}{1}(1,1)+A{1,2}{1}(2,2)); a=1; celldisp(A) elseif price<500 a=2; A{1,1} = elseif price<1000 this is cell a=3; A{2,1} = elseif price<2500 1.0000 + 2.0000i a=4; elseif price<5000 a=5; else a=6; end switch a case 0 disp('0 inputs given'); 3. 已知单位负反馈控制系统的被控对象及控制器的传递 case 1 函数分别为 b=price; 20(s,1)(s,2)16(1,s/2.5), Gc(s), case 2 G(s),s(1,s/0.5)(1,s/20)(s,1.5)(s,23) b=0.97*price; 试判断系统的稳定性,并用时域响应检验得出的结论。 case 3 b=0.95*price; >> s=tf('s') case 4 b=0.92*price; Transfer function: case 5 s b=0.90*price; case 6 >> Gs=16*(1+s/2.5)/[s*(1+s/0.5)*(1+s/20)] b=0.86*price; otherwise Transfer function: disp('unexpected input!'); 6.4 s + 16 end ---------------------- fprintf('the actaul price is %f',b); 0.1 s^3 + 2.05 s^2 + s 4、二阶微分方程x"+0.2x'+0.4x=0.2u (t), 其中u(t)是>> Gc=20*(s+1)*(s+2)/[(s+1.5)*(s+23)] 单位阶跃函数,试建立系统模型并仿真。 Transfer function: 20 s^2 + 60 s + 40 ------------------- 1. 请编写一个M-函数,用来实现级数和 s^2 + 24.5 s + 34.5 23nxxx>> GG=feedback(Gs*Gc,1) S,1,x,,,,? 352n,1Transfer function: 并利用该M-函数计算n = 学号末2位数+5,x = n/60时S 128 s^3 + 704 s^2 + 1216 s + 640 -------------------------------------------------------- 的值。 0.1 s^5 + 4.5 s^4 + 182.7 s^3 + 799.2 s^2 + 1251 s + 640 1. function s=zh(x,n) >> eig(GG) if nargin>2,error('wrong');end if nargout>1,error('wrong');end ans = ss=1; for t=1:n,ss=ss+(x^t)./(2*t-1); -20.1421 +34.9785i s=ss;end -20.1421 -34.9785i >> zh(35/60,35) -1.8264 + 0.5997i -1.8264 - 0.5997i ans = -1.0630 1.7677 根都有负实部 则系统稳定 2. 已知系统的框图如下图所示,请推导出从输入信号r(t) 到输出信号y(t)的总系统模型。 >> step(GG,1) 2. syms G1 G2 G3 G4 G5 G6 G7 H1 H2 H3 H4 c1=feedback(G4,H4); c2=feedback(G3*G2,H2); c3=feedback(G5*c1,H3); G=feedback((G6+G7)*c3*c2*G1,H1) 123,,,,a,456,分别计算a的数组平方和2.10 已知:,,,,789,, 矩阵平方,并观察其结果。 >> a=[1 2 3;4 5 6;7 8 9]; >> a.^2 ans = 1 4 9 16 25 36 49 64 81 >> a^2 ans = 30 36 42 66 81 96 102 126 150 4. 考虑简单的线性微分方程 8,74125,,,,(4)(3)''',3t,5ta,b,2.11 ,,观察a与by,4y,13y,4y,2y,e,esin(2t), ,,,,36,4362,,,,(3)且方程的初值为y(0)=1,y’(0)=y”(0)=1/2,y(0)=0.6,,请之间的六种关系运算的结果。 用Simulink搭建起系统的仿真模型,并绘制出仿真结果曲>> a=[1 2 3;4 5 6]; 线。 >> b=[8 –7 4;3 6 2]; >> a>b 4,8i3,5i2,7i1,4i7,5i,,ans = x,2.6 求的共轭,, 0 1 0 3,2i7,6i9,4i3,9i4,4i,, 1 0 1 转置。 >> a>=b >> x=[4+8i 3+5i 2-7i 1+4i 7-5i;3+2i 7-6i 9+4i 3-9i ans = 4+4i]; 0 1 0 >> x’ 1 0 1 ans = >> a> a<=b 7.0000 + 5.0000i 4.0000 - 4.0000i ans = 1 0 1 693241,,,, 0 1 0 a,b,2.7 计算与的数组乘积。 ,,,,275468,,,,>> a==b ans = >> a=[6 9 3;2 7 5]; 0 0 0 >> b=[2 4 1;4 6 8]; 0 0 0 >> a.*b ans = >> a~=b 12 36 3 ans = 8 42 40 1 1 1 1 1 1 2.13 在sin(x)运算中,x是角度还是弧度, 49237,,,,,,,,在sin(x)运算中~x是弧度~MATLAB规定所有的三A,764B,262.9 对于,如果,,求AX,B,,,,角函数运算都是按弧度进行运算。 ,,,,35728,,,, 解X。 ,,x,3045602.14 角度,求x的正弦、余弦、正切>> A=[4 9 2;7 6 4;3 5 7]; 和余切。 >> B=[37 26 28]’; >> x=[30 45 60]; >> X=A\B >> x1=x/180*pi; X = >> sin(x1) -0.5118 ans = 4.0427 0.5000 0.7071 0.8660 1.3318 0 -4.8172 -1.0807 >> cos(x1) 0 0 3.7733 ans = >> c=chol(a) 0.8660 0.7071 0.5000 c = >> tan(x1) 3.0000 0.3333 0.6667 ans = 0 2.4267 1.1447 0.5774 1.0000 1.7321 0 0 2.2903 >> cot(x1) ans = 594271,,,, 1.7321 1.0000 0.5774 ,,c,a,b,、和组合2.17 将矩阵,,,,,, 837562,,,,,,2.15 用四舍五入的方法将数组[2.4568 6.3982 成两个新矩阵: 3.9375 8.5042]取整。 ,1,组合成一个4,3的矩阵~第一列为按列顺序排>> b=[2.4568 6.3982 3.9375 8.5042]; 列的a矩阵元素~第二列为按列顺序排列的b矩阵元素~>> round(b) 第三列为按列顺序排列的c矩阵元素~即 ans = 475,, 2 6 4 9 ,, 586,, 912,,,,219,,,,a,5632.16 矩阵,分别对a进行特征值分解、732,,,,,,827,,,2,按照a、b、c的列顺序组合成一个行矢量~即 奇异值分解、LU分解、QR分解及Chollesky分解。 ,,452778135692 >> [v,d]=eig(a,b) >> a=[4 2;5 7]; v = >> b=[7 1;8 3]; -0.4330 -0.2543 -0.1744 >> c=[5 9;6 2]; -0.5657 0.9660 -0.6091 % (1) -0.7018 0.0472 0.7736 >> d=[a(:) b(:) c(:)] d = d = 13.5482 0 0 4 7 5 0 4.8303 0 5 8 6 0 0 3.6216 2 1 9 >> a=[9 1 2;5 6 3;8 2 7]; 7 3 2 >> [u,s,v]=svd(a) % (2) u = >> e=[a(:);b(:);c(:)]' -0.5601 0.5320 -0.6350 e = -0.4762 -0.8340 -0.2788 4 5 2 7 7 8 1 3 5 -0.6779 0.1462 0.7204 6 9 2 s = 或利用,1,中产生的d 15.5234 0 0 >> e=reshape(d,1,12) 0 4.5648 0 ans = 0 0 3.3446 4 5 2 7 7 8 1 3 5 v = 6 9 2 -0.8275 0.3917 -0.4023 -0.3075 -0.9156 -0.2592 -0.4699 -0.0907 0.8781 第3章 数值计算基础 >> [l,u]=lu(a) 3.1 将(x-6)(x-3)(x-8)展开为系数多项式的形式。 l = >> a=[6 3 8]; 1.0000 0 0 >> pa=poly(a); 0.5556 1.0000 0 >> ppa=poly2sym(pa) 0.8889 0.2041 1.0000 ppa = u = x^3-17*x^2+90*x-144 9.0000 1.0000 2.0000 0 5.4444 1.8889 323.2 求解多项式x-7x+2x+40的根。 0 0 4.8367 >> r=[1 -7 2 40]; >> [q,r]=qr(a) >> p=roots(r); q = -0.2151 -0.6903 0.3969 -0.6050 0.4459 -0.3835 -0.9097 -0.1592 0.7949 -0.6136 0.1221 0.7801 0.2707 r = -13.0384 -4.2183 -6.8260 -0.2000 3.3 求解在x=8时多项式(x-1)(x-2) (x-3)(x-4)的值。 -1.4000 >> p=poly([1 2 3 4]); >> polyvalm(p,8) 24748,,,, ans = x,的最小范数3.9 求欠定方程组,,,, 840 93565,,,, 解。 223.4 计算多项式乘法(x+2x+2)(x+5x+4)。 >> a=[2 4 7 4;9 3 5 6]; >> c=conv([1 2 2],[1 5 4]) >> b=[8 5]'; c = >> x=pinv(a)*b 1 7 16 18 8 x = -0.2151 323.5 计算多项式除法(3x+13x+6x+8)/(x+4)。 0.4459 >> d=deconv([3 13 6 8],[1 4]) 0.7949 d = 0.2707 3 1 2 2 3.10 有一组测量数据如下表所示,数据具有y=x的3.6 对下式进行部分分式展开: 变化趋势,用最小二乘法求解y。 4323x,2x,5x,4x,6x 1 1.5 2 2.5 3 3.5 4 4.5 5 5432x,3x,4x,2x,7x,2y -1.4 2.7 3 5.9 8.4 12.2 16.6 18.8 26.2 >> a=[1 3 4 2 7 2]; >> b=[3 2 5 4 6]; >> x=[1 1.5 2 2.5 3 3.5 4 4.5 5]' >> [r,s,k]=residue(b,a) >> y=[-1.4 2.7 3 5.9 8.4 12.2 16.6 18.8 26.2]' r = >> e=[ones(size(x)) x.^2] 1.1274 + 1.1513i >> c=e\y 1.1274 - 1.1513i >> x1=[1:0.1:5]'; -0.0232 - 0.0722i >> y1=[ones(size(x1)),x1.^2]*c; -0.0232 + 0.0722i >> plot(x,y,'ro',x1,y1,'k') 0.7916 s = 42,6,, -1.7680 + 1.2673i ,, -1.7680 - 1.2673i a,7543.11 矩阵,计算a的行列式和逆矩阵。 ,, 0.4176 + 1.1130i ,,349,, 0.4176 - 1.1130i >> a=[4 2 -6;7 5 4 ;3 4 9]; -0.2991 >> ad=det(a) k = >> ai=inv(a) [] ad = 432 -64 4x,12x,14x,5x,93.7 计算多项式的微分和积 ai = 分。 -0.4531 0.6562 -0.5937 >> p=[4 –12 –14 5]; 0.7969 -0.8437 0.9062 >> pder=polyder(p); -0.2031 0.1562 -0.0937 >> pders=poly2sym(pder) >> pint=polyint(p); 3.12 y=sin(x),x从0到2,,,x=0.02,,求y的最大 >> pints=poly2sym(pint) 值、最小值、均值和标准差。 pders = >> x=0:0.02*pi:2*pi; 12*x^2-24*x-14 >> y=sin(x); pints = >> ymax=max(y) x^4-4*x^3-7*x^2+5*x >> ymin=min(y) >> ymean=mean(y) 29013,,,, >> ystd=std(y) ,,,,3411x,63.8 解方程组。 ,,,, ymax = ,,,,2266,,,, 1 ymin = >> a=[2 9 0;3 4 11;2 2 6]; -1 >> b=[13 6 6]'; ymean = >> x=a\b 2.2995e-017 x = ystd = 7.4000 0.7071 ,2,f='3*x^2+5*x+2' 表示将字符串'3*x^2+5*x+2'赋值给字符变量f~没有3.13 ,,计算,,,,x,12345y,246810任何计算含义~因此也不对字符串中的内容做任何分析。 x的协方差、y的协方差、x与y的互协方差。 ,3,x=sym('x') >> x=[1 2 3 4 5]; f=3*x^2+5*x+2 >> y=[2 4 6 8 10]; 表示x是一个符号变量~因此算式f=3*x^2+5*x+2就 >> cx=cov(x) 具有了符号函数的意义~f也自然成为符号变量了。 >> cy=cov(y) 2 >> cxy=cov(x,y) +b*t+c=0。 4.3 用符号函数法求解方程at cx = >> r=solve('a*t^2+b*t+c=0','t') 2.5000 r = cy = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] 10 [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] cxy = 2.5000 5.0000 4.4 用符号计算验证三角等式: 5.0000 10.0000 sin(,)cos(,)-cos(,)sin(,) =sin(,-,) 121212 >> syms phi1 phi2; 3.14 参照例3-20的方法,计算表达式 >> 2235,x,y的梯度并绘图。 y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2)) ,,z,10x,ye y = >> v = -2:0.2:2; sin(phi1-phi2) >> [x,y] = meshgrid(v); >> z=10*(x.^3-y.^5).*exp(-x.^2-y.^2); aa,,1112 >> [px,py] = gradient(z,.2,.2); 4.5 求矩阵的行列式值、逆和特征根。 A,,,aa >> contour(x,y,z) 2122,, >> hold on >> syms a11 a12 a21 a22; >> quiver(x,y,px,py) >> A=[a11,a12;a21,a22] >> hold off >> AD=det(A) % 行列式 >> AI=inv(A) % 逆 3.15 有一正弦衰减数据y=sin(x).*exp(-x/10),其中 >> AE=eig(A) % 特征值 x=0:pi/5:4*pi,用三次样条法进行插值。 A = >> x0=0:pi/5:4*pi; [ a11, a12] >> y0=sin(x0).*exp(-x0/10); [ a21, a22] >> x=0:pi/20:4*pi; AD = >> y=spline(x0,y0,x); a11*a22-a12*a21 AI = >> plot(x0,y0,'or',x,y,'b') [ -a22/(-a11*a22+a12*a21), a12/(-a11*a22+a12*a21)] 第4章 符号数学基础 [ a21/(-a11*a22+a12*a21), 4.1 创建符号变量有几种方法, -a11/(-a11*a22+a12*a21)] MATLAB提供了两种创建符号变量和表达式的函 AE = 数:sym和syms。 sym用于创建一个符号变量或表达式~用法如[ 1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a2x=sym(‘x’) 及 f=sym(‘x+y+z’)~syms用于创建多个符号1)^(1/2)] 变量~用法如syms x y z。 f=sym(‘x+y+z’) [ 1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a2 相当于 1)^(1/2)] 432 syms x y z x,5x,5x,5x,64.6 因式分解: f= x+y+z >> syms x; >> f=x^4-5*x^3+5*x^2+5*x-6; 4.2 下面三种表示方法有什么不同的含义, >> factor(f) (1)f=3*x^2+5*x+2 ans = (2)f='3*x^2+5*x+2' (x-1)*(x-2)*(x-3)*(x+1) (3)x=sym('x') 1,,2ax,, f=3*x^2+5*x+2 f,4.7 ,用符号微分求df/dx。 x,,ax,1,f=3*x^2+5*x+2 exxlog()sin(),, 表示在给定x时~将3*x^2+5*x+2的数值运算结果赋 >> syms a x; 值给变量f~如果没有给定x则指示错误信息。 >> f=[a, x^2, 1/x; exp(a*x), log(x), sin(x)]; 第1第3第4第5第6 >> df=diff(f) 第2次 次 次 次 次 次 df = [ 0, 2*x, -1/x^2] 观测点1 3 6 7 4 2 8 [ a*exp(a*x), 1/x, cos(x)] 观测点2 6 7 3 2 4 7 2,ax,by,c,0,观测点3 9 7 2 5 8 4 4.8 求代数方程组关于x,y的解。 ,,观测点4 6 4 3 2 7 4 x,y,0, >> S=solve('a*x^2+b*y+c=0','b*x+c=0','x','y'); >> disp('S.x=') , disp(S.x) 5.5表中列出了4个观测点的6次测量数据,将数据 >> disp('S.y=') , disp(S.y) 绘制成为分组形式和堆叠形式的条形图。 S.x= >> y=[3 6 9 6;6 7 7 4;7 3 2 3;4 2 5 2;2 4 8 7;8 7 4 4]; -c/b >> bar(y) S.y= -c*(a*c+b^2)/b^3 >> bar(y,’stack’) 4.9 符号函数绘图法绘制函数x=sin(3t)cos(t), y=sin(3t)sin(t)的图形,t的变化范围为[0,2,]。 5.6 x= [66 49 71 56 38],绘制饼图,并将第五 >> syms t 个切块分离出来。 >> ezplot(sin(3*t)*cos(t),sin(3*t)*sin(t),[0,pi]) >> x=[66 49 71 56 38]; >> L=[0 0 0 0 1]; 4.10 绘制极坐标下sin(3*t)*cos(t)的图形。 >> pie(x,L) >> syms t >> ezpolar(sin(3*t)*cos(t) 22,x,y ,当x和y的取值范围均为-2到2时,5.7 z,xe 第5章 基本图形处理功能 用建立子窗口的方法在同一个图形窗口中绘制出三维线35.1 绘制曲线,x的取值范围为[-5,5]。 y,x,x,1图、网线图、表面图和带渲染效果的表面图。 >> x=-5:0.2:5; >> [x,y]=meshgrid([-2:.2:2]); >> y=x.^3+x+1; >> z=x.*exp(-x.^2-y.^2); >> plot(x,y) >> mesh(x,y,z) >> subplot(2,2,1), plot3(x,y,z) -at >> title('plot3 (x,y,z)') 5.2 有一组测量数据满足,t的变化范围为y,e >> subplot(2,2,2), mesh(x,y,z) 0~10,用不同的线型和标记点画出a=0.1、a=0.2和a=0.5 >> title('mesh (x,y,z)') 三种情况下的曲线。 >> subplot(2,2,3), surf(x,y,z) >> t=0:0.5:10; >> title('surf (x,y,z)') >> y1=exp(-0.1*t); >> subplot(2,2,4), surf(x,y,z), shading interp >> y2=exp(-0.2*t); >> title('surf (x,y,z), shading interp') >> y3=exp(-0.5*t); >> plot(t,y1,'-ob',t,y2,':*r',t,y3,'-.^g') 5.8 绘制peaks函数的表面图,用colormap函数改变 预置的色图,观察色彩的分布情况。 -at5.3 在5.1题结果图中添加标题,并用箭头线y,e >> surf(peaks(30)); 标识出各曲线a的取值。 >> title('\ity\rm=e^{-\itat}') >> colormap(hot) >> title('\ity\rm=e^{-\itat}','FontSize',12) >> >> colormap(cool) text(t(6),y1(6),'\leftarrow\ita\rm=0.1','FontSize',11) >> >> colormap(lines) text(t(6),y2(6),'\leftarrow\ita\rm=0.2','FontSize',11) >> 5.9 用sphere函数产生球表面坐标,绘制不通明网线text(t(6),y3(6),'\leftarrow\ita\rm=0.5','FontSize',11) 图、透明网线图、表面图和带剪孔的表面图。 >> [x,y,z]=sphere(30); -aty,e.1题结果图中添加标题5.4 在5和图例框。 >> mesh(x,y,z) >> title('\ity\rm=e^{-\itat}','FontSize',12) >> legend('a=0.1','a=0.2','a=0.5') >> mesh(x,y,z),hidden off >> surf(x,y,z) >> z(18:30,1:5)=NaN*ones(13,5); 6.7 用subplot语句在一个图形窗口上开多个大小不 >> surf(x,y,z) 等的子窗口进行绘图并添加注释,见图。 5.10 将5.9题中的带剪孔的球形表面图的坐标改变subplot('position',[0.1,0.15,0.3,0.65]) hist(randn(1,1000),20); 为正方形,以使球面看起来是圆的而不是椭圆的,然后关 xlabel('直方图') 闭坐标轴的显示。 axis square subplot('position',[0.45,0.52,0.25,0.28]) axis off [xp,yp,zp]=peaks; contour(xp,yp,zp,15,'k') hold on pcolor(xp,yp,zp) 6.3 如何设置和获取指定句柄对象的属性值,一图shading interp 形窗口对象的句柄为h,先查询该窗口对象可以设置的各hold off 种属性,再将窗口的灰色背景设置为白色背景。 axis off ,1,利用set,句柄~‘属性名称’~属性值,语句可text(-1.2,-4,'伪彩色图') 以设置指定对象的属性~get,句柄~‘属性名称’,语句可 以获得指定对象的属性。 subplot('position',[0.72,0.5,0.25,0.3]) (2)>> set(h) sphere(25); Alphamap axis equal,axis([-0.75,0.75,-0.75,0.75,-0.75,0.75]) BackingStore: [ {on} | off ] light('Position',[1 3 2]); CloseRequestFcn: string -or- function handle -or- light('Position',[-3 -1 3]); cell array material shiny Color axis off Colormap text(-0.8,-0.7,-1,'三维图') CurrentAxes CurrentCharacter subplot('position',[0.45,0.15,0.5,0.25]) CurrentObject t=0:pi/15:pi; „„ y=sin(4*t).*sin(t)/2; 从列出的属性内容可以看到~设置背景颜色的属性名 plot(t,y,'-bs','LineWidth',2,... %设置线型 为Color~因此 'MarkerEdgeColor','k',... %设置标记点>> set(h,’color’,’w’) 边缘颜色 即可将图形窗口的背景色改为白色。 'MarkerFaceColor','y',... %设置标记点 填充颜色 6.4 已知三维图形视角的缺省值是方位角为-37.5?, 'MarkerSize',5) 仰角为30?,将观察点顺时针旋转20:角的命令是什么, axis([0,3.14,-0.5,0.5]) >> view(-57.5,30) xlabel('带标记点的线图') 6.5画一双峰曲面(peaks)图,加灯光light,改变光 subplot('position',[0.1,0.9,0.8,0.1]) 源的位置观察图形的变化。 text(0.25,0.2,'多窗口绘图示例',... >> surf(peaks) 'fontsize',25,'fontname','隶','color','b') >> shading interp axis off >> lighting phong >> light('Position',[-3 -2 1]); 6.8 用[c,hc]=contour(peaks(30))语句绘制双峰曲面的 >> light('Position',[-1 0 1]); 等高线图,通过控制图形句柄的方法将第四条等高线加粗 为2磅,将第六条等高线表示为虚线,在第十条等高线上6.6 在双峰曲面上改变不同的光照模式,观察效果。 加星号标记 >> surf(peaks) [c,hc]=contour(peaks(30)); >> shading interp >> light('Position',[-3 -2 1]); 6.9 做一个花瓶,如图示。(提示:做一个旋转体表>> lighting flat 面,调入一幅图像对该表面进行彩绘,即用图像的色图索 引作为表面体的色图索引) >> lighting gouraud >> t=(0:20)/20; >> lighting phong >> r=sin(2*pi*t)+2; >> [x,y,z]=cylinder(r,40); % 产生旋转体表面的>> lighting none 三维数据 >> cx=imread('flowers.tif'); % 读取名为通过移动中间的滑块选择不同的取值并显示在数字框中,flowers.tif的图象文件 如果在数字框中输入指定范围内的数字,滑块将移动到相 >> [c,map]=rgb2ind(cx,256); % 真彩色图转换为应的位置,见下图。 索引图(若读入的是索引图,不需转换) >> c1=double(c)+1; % 把unit8编址图象 数据变换为双精度格式 >> surface(x,y,z,'Cdata',flipud(c1),'FaceColor','texturemap',... 'EdgeColor','none','CDataMapping','direct','Ambient',... 0.6,'diffuse',0.8,'speculars',0.9) %通过属性设置,进 行彩绘。 >> colormap(map) % 使用图象的色图 >> view(-50,10) >> axis off 第7章 GUI程序 7.1 GUI开发环境中提供了哪些方便的工具,各有什 么用途, 提示: 在GUI开发环境中提供了下列五个方便的工具: ,1,在figure的属性浏览器中设置Name为GUI ,1,布局编辑器,Layout Editor,—在图形窗口中创Demo: Slider 建及布置图形对象 ,2,先建立一个滑条对象~在属性浏览器中设置Max ,2,几何排列工具,Alignment Tool,—调整各对象为50~Min为-50, 之间的相互几何关系和位置 ,3,在滑条的两端各放置一个静态文本用于显示最 ,3,属性编辑器,Property Inspector,—查询并设置大值和最小值, 对象的属性值 ,4,滑条对象的callback函数中的内容为: ,4,对象浏览器,Object Browser,—获得当前 val=get(handles.slider1,'value'); MATLAB窗口中图形对象句柄的分级排列 set(handles.edit1,'string',num2str(val)); ,5,在滑条上方放置一个文本框~用于显示滑块的,5,菜单编辑器,Menu Editor,—建立和编辑主菜 位置所指示的数值~也可以在文本框中直接输入数值~单和图形对象的鼠标右键菜单 callback函数中的内容为: 7.2 做一个带按钮的界面,当按动按钮时,在计算机 str=get(handles.edit1,'string'); 声卡中播放一段音乐。(提示,找一个.wav文件,简单起 set(handles.slider1,'value',str2num(str)); 见可以在windows目录下找一个文件,将其放在当前工作 目录下或搜索路径上,当按动“开始”按钮时调入该文件7.4 用单选框做一个如图所示的界面,通过选择不同并播放,发声功能由sound函数完成,具体用法请查阅帮的单选框来决定使用不同的色彩图。 助信息) 提示: ,1,先建立一个静态文本对象作为界面的标题‚简 单声音播放器? ,2,建立一个按钮对象用于启动播放器~callback,1,建立坐标轴对象~用于显示图形, 函数中的内容为 ,2,建立建立五个单选框~用于选择不同的色图, [y,f,b]=wavread('loff'); % 读入声音文件,3,callback函数的内容为: loff.wav function varargout = radiobutton1_Callback(h, sound(y,f,b) % 由声卡播放声音 eventdata, handles, varargin) ,3,再建立一个用于关闭界面的按钮对象~callbackset(handles.radiobutton1,'value',1) 函数中的内容为 set(handles.radiobutton2,'value',0) close(gcbf) set(handles.radiobutton3,'value',0) 7.3 做一个滑条(滚动条)界面,图形窗口标题设置set(handles.radiobutton4,'value',0) 为GUI Demo: Slider,并关闭图形窗口的菜单条。功能:set(handles.radiobutton5,'value',0) colormap(jet) % -------------------------------------------------------------------- function varargout = radiobutton2_Callback(h, eventdata, handles, varargin) set(handles.radiobutton1,'value',0) set(handles.radiobutton2,'value',1) set(handles.radiobutton3,'value',0) set(handles.radiobutton4,'value',0) set(handles.radiobutton5,'value',0) colormap(hsv) % 提示: -------------------------------------------------------------------- function varargout = radiobutton3_Callback(h, ,1,建立一个静态文本~用于显示界面的标题:光 eventdata, handles, varargin) 照效果演示, set(handles.radiobutton1,'value',0) ,2,建立坐标轴对象~用于显示图形, set(handles.radiobutton2,'value',0) ,3,建立四个下拉菜单~分别用于选择绘图表面的set(handles.radiobutton3,'value',1) 形状、色图、光照模式和反射模式~每个下拉菜单的上方set(handles.radiobutton4,'value',0) 都有一个静态文本用于说明菜单的作用, set(handles.radiobutton5,'value',0) ,4,在一个frame上建立三个滑条用于确定光源的colormap(hot) 位置~并在frame上方加一说明, % ,5,建立一个按钮用于退出演示, -------------------------------------------------------------------- ,6,callback函数的内容为: function varargout = radiobutton4_Callback(h, eventdata, handles, varargin) function varargout = pushbutton1_Callback(h, eventdata, set(handles.radiobutton1,'value',0) handles, varargin) set(handles.radiobutton2,'value',0) delete(handles.figure1) set(handles.radiobutton3,'value',0) set(handles.radiobutton4,'value',1) % set(handles.radiobutton5,'value',0) -------------------------------------------------------------------- colormap(pink) function varargout = popupmenu1_Callback(h, eventdata, handles, varargin) % val=get(h,'value'); -------------------------------------------------------------------- switch val function varargout = radiobutton5_Callback(h, case 1 eventdata, handles, varargin) surf(peaks); set(handles.radiobutton1,'value',0) case 2 set(handles.radiobutton2,'value',0) sphere(30); set(handles.radiobutton3,'value',0) case 3 set(handles.radiobutton4,'value',0) membrane set(handles.radiobutton5,'value',1) case 4 colormap(copper) [x,y]=meshgrid(-4:.1:4); 7.5 制作一个曲面光照效果的演示界面,如图所示, r=sqrt(x.^2+y.^2)+eps; 三个弹出式菜单分别用于选择曲面形式、色彩图、光照模 z=sinc(r); surf(x,y,z) 式和反射模式,三个滚动条用于确定光源的位置,一个按 case 5 钮用于退出演示。 [x,y]=meshgrid([-1.5:.3:1.5],[-1:0.2:1]); z=sqrt(4-x.^2/9-y.^2/4); surf(x,y,z); case 6 t=0:pi/12:3*pi; r=abs(exp(-t/4).*sin(t)); [x,y,z]=cylinder(r,30); surf(x,y,z); end shading interp light('Position',[-3 -2 1]); axis off case 5 colormap(pink) % case 6 -------------------------------------------------------------------- colormap(spring) function varargout = radiobutton1_Callback(h, case 7 eventdata, handles, varargin) colormap(summer) set(h,'value',1) case 8 set(handles.radiobutton2,'value',0) colormap(autumn) set(handles.radiobutton3,'value',0) case 9 set(handles.radiobutton4,'value',0) colormap(winter) end lighting flat % % -------------------------------------------------------------------- -------------------------------------------------------------------- function varargout = popupmenu3_Callback(h, function varargout = radiobutton2_Callback(h, eventdata, handles, varargin) eventdata, handles, varargin) val=get(h,'value'); set(h,'value',1) switch val set(handles.radiobutton1,'value',0) case 1 set(handles.radiobutton3,'value',0) lighting flat set(handles.radiobutton4,'value',0) case 2 lighting gouraud lighting gouraud case 3 lighting phong % case 4 -------------------------------------------------------------------- lighting none function varargout = radiobutton3_Callback(h, end eventdata, handles, varargin) set(h,'value',1) % set(handles.radiobutton1,'value',0) -------------------------------------------------------------------- set(handles.radiobutton2,'value',0) function varargout = popupmenu4_Callback(h, set(handles.radiobutton4,'value',0) eventdata, handles, varargin) val=get(h,'value'); lighting phong switch val case 1 % material shiny -------------------------------------------------------------------- case 2 function varargout = radiobutton4_Callback(h, material dull eventdata, handles, varargin) case 3 set(h,'value',1) material metal set(handles.radiobutton1,'value',0) case 4 set(handles.radiobutton3,'value',0) material default set(handles.radiobutton3,'value',0) end lighting none % -------------------------------------------------------------------- % function varargout = slider1_Callback(h, eventdata, -------------------------------------------------------------------- handles, varargin) function varargout = popupmenu2_Callback(h, val=get(h,'value'); eventdata, handles, varargin) set(handles.edit1,'string',num2str(val)); val=get(h,'value'); lx==val; ly=get(handles.slider2,'value'); switch val ly=get(handles.slider3,'value'); case 1 light('Position',[x y z]); colormap(jet) case 2 % colormap(hot) -------------------------------------------------------------------- case 3 function varargout = edit1_Callback(h, eventdata, colormap(cool) handles, varargin) case 4 str=get(h,'string'); colormap(copper) set(handles.slider1,'value',str2num(str)); lx==str2num(str); ly=get(handles.slider2,'value'); ,2,在Plot Option菜单项下面建立第二级子菜单项ly=get(handles.slider3,'value'); LineStyle、Marker和Color, light('Position',[x y z]); ,3,在第二级菜单项下面分别建立第三级子菜单项。 % -------------------------------------------------------------------- function varargout = slider2_Callback(h, eventdata, handles, varargin) val=get(h,'value'); set(handles.edit2,'string',num2str(val)); lx=get(handles.slider1,'value'); lx==val; ly=get(handles.slider3,'value'); light('Position',[x y z]); % -------------------------------------------------------------------- function varargout = edit2_Callback(h, eventdata, handles, varargin) 7.7 建立三个输入窗口的输入对话框,如图所示。 str=get(h,'string'); set(handles.slider2,'value',str2num(str)); % -------------------------------------------------------------------- function varargout = slider3_Callback(h, eventdata, handles, varargin) val=get(h,'value'); 输入命令或程序: set(handles.edit3,'string',num2str(val)); prompt={'输入姓名','输入年龄','输入职业 '}; % -------------------------------------------------------------------- title='信息登记'; function varargout = edit3_Callback(h, eventdata, lines=[1 1 1]'; handles, varargin) def={'张平','3','教师'}; str=get(h,'string'); answer=inputdlg(prompt,title,lines,de set(handles.slider3,'value',str2num(str)); f); 8.7 编制一个解数论问题的函数文件:取任意整数, 若是偶数,则用2除,否则乘3加1,重复此过程,直到 整数变为1。 function c=collatz(n) % collatz % Classic “3n+1” Ploblem from number theory c=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end 7.6 创建一个用于绘图参数选择的菜单对象Plot c=[c n]; Option,其中包含三个选项LineStyle、Marker和Color, end 每个选项下面又包含若干的子项分别可以进行选择图线 的类型、标记点的类型和颜色。 8.8 有一组学生的考试成绩(见表),根据规定,成 提示: 绩在100分时为满分,成绩在90~99之间时为优秀,成绩 ,1,打开菜单编辑器~建立第一级菜单项Plot 在80~89分之间时为良好,成绩在60~79分之间为及格,Option, 成绩在60分以下时为不及格,编制一个根据成绩划分等 end 级的程序。 学生姓名 王 张 刘 李 陈 杨 于 黄 郭 赵 学生姓名 得分 等级 成 绩 72 83 56 94 100 88 96 68 54 65 ----------------------------------------- 王 72 及格 Name=['王','张','刘','李','陈','杨','于','黄','郭','赵']; 张 83 良好 Marks=[72,83,56,94,100,88,96,68,54,65]; 刘 56 不及格 % 划分区域:满分(100),优秀(90-99),良好 李 94 优秀 (80-89),及格(60-79),不及格(<60)。 陈 100 满分 n=length(Marks); 杨 88 良好 for i=1:n a{i}=89+i; 于 96 优秀 b{i}=79+i; 黄 68 及格 c{i}=69+i; 郭 54 不及格 d{i}=59+i; 赵 65 及格 end; 8.9 编写一段程序,能够把输入的摄氏温度转化成华 c=[d,c]; 氏温度,也能把华氏温度转换成摄氏温度。 % 根据学生的分数,求出相应的等级。 k=input('选择转换方式(1--摄氏转换为华氏,2-- for i=1:n 华氏转换为摄氏):'); switch Marks(i) if k~=1 & k~=2 case 100 %得分为100时 disp('请指定转换方式') Rank(i,:)=' 满分'; break case a %得分在90~99 end 之间 tin=input('输入待转变的温度(允许输入数组):'); Rank(i,:)=' 优秀'; if k==1 case b %得分在80~89 tout=tin*9/5+32; % 摄氏转换为华氏 之间 k1=2; Rank(i,:)=' 良好'; elseif k==2 case c %得分在60~79 tout=(tin-32)*5/9; % 华氏转换为摄氏 之间 k1=1; Rank(i,:)=' 及格'; end otherwise %得分低于60。 str=[' :C';' :F']; disp(['转换前的温度', ' ', '转换后的温度']) Rank(i,:)='不及格'; disp([' ',num2str(tin),str(k,:), ' ', end num2str(tout),str(k1,:)]) end % 将学生姓名,得分,级等信息打印出来。 第9章 Simulink基础 disp(' ') 9.3 有传递函数如下的控制系统,用Simulink建立系 disp(['学生姓名 ',' 得分 ',' 等级']); disp('--------------------------') 统模型,并对系统的阶跃响应进行仿真。 for i=1:10; 1G(s), disp([' ',Name(i),' ',num2str(Marks(i)),' 2s,4s,8',Rank(i,:)]); 9.4 建立一个简单模型,用信号发生器产生一个幅度 为2V、频率为0.5Hz的正弦波,并叠加一个0.1V的噪声 信号,将叠加后的信号显示在示波器上并传送到工作空 间。 9.5 建立一个简单模型,产生一组常数(1×5),再 将该常数与其5倍的结果合成一个二维数组,用数字显示器显示出来。 9.6 建立一个模拟系统,将摄氏温度转换为华氏温度(T = 9/5T+32)。 fc ,n9.8 皮球以15米/秒的速度从10米高的地方落下,建G(S),9.7 建立二阶系统的脉冲响22S,2,,S,,立显示球弹跳轨迹的模型。 nn应模型,设ω=10Hz,观察当0<ζ<1、ζ=0、ζ=1及ζ>1n 时系统的响应。 点乘积。可以用一个指定向量生成一个范得蒙矩阵。在 MATLAB中,函数vander(V)生成以向量V为基础向量的范 得蒙矩阵。例如,A=vander([1;2;3;5])即可得到上述范 得蒙矩阵。) V=[1,2,3,4,5,6]; A=vander(V); A A = MATLAB初步入门习题 1 1 1 1 1 1 32 16 8 4 2 1 243 81 27 9 3 1 1024 256 64 16 4 1 3125 625 125 25 5 1 1( 计算复数3+4i与5?6i的乘积。 7776 1296 216 36 6 1 a=complex(3,4); b=complex(5,-6); 5(按水平和竖直方向分别合并下述两个矩阵: s=a*b s = 39.0000 + 2.0000i 2(构建结构体Students,属性包含Name、Age和Email, 数据包括{'Zhang',18, A=[1 0 0;1 1 0;0 0 1]; [‘zhang@163.com’, ‘zhang@263.com’]}、 B=[2 3 4; 5 6 7;8 9 10]; H=vertcat(A,B) {‘Wang’,21, []}和{‘Li’,[], []},构建后读取 所有Name属性值,并且修改‘Zhang’的Age属性值H = 为19。 Student.Name='zhang'; 1 0 0 Student.Age=18; 1 1 0 Student.Email='zhang@163.com,zhang@263.com'; 0 0 1 Student 2 3 4 5 6 7 Student = 8 9 10 name: 'zhang' S=horzcat(A,B) Name: 'zhang' Age: 18 S = Email: 'zhang@163.com,zhang@263.com' Student.Age=19 1 0 0 2 3 4 1 1 0 5 6 7 Student = 0 0 1 8 9 10 Name: 'zhang' Age: 19 Email: 'zhang@163.com,zhang@263.com' 6(分别删除第5题两个结果的第2行。 >> H(2,:)=[] 2( 采用向量构造符得到向量[1,5,9,…,41] A=1:4:41 H = T1,2,3,,6?A4(利用列向量建立一个范得蒙矩阵,并,, 1 0 0 0 0 1 A利用位于矩阵的奇数行偶数列的元素建立一个新的矩 2 3 4 B阵,须保持这些元素的相对位置不变。 5 6 7 (范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二 8 9 10 列为一个指定的向量,其他各列是其后列与倒数第二列的 S(2,:)=[] S2 = S = 2 0 0 1 0 0 2 3 4 5 6 0 0 0 1 8 9 10 0 0 10 S3=A\B 7(分别将第5题两个结果的第2行最后3列的数值改为 S3 = [11 12 13]。 H(2,1)=11; 2 3 4 H(2,2)=12; 3 3 3 H(2,3)=13 8 9 10 H = 10.写出执行以下代码后,MATLAB命令窗口上显示的x矩阵 1 0 0 的值 11 12 13 0 0 1 x=[0,1,0,2,0,3,0,4]; 2 3 4 for k=1:8 5 6 7 if x(k)==0 8 9 10 x(k)=k; else S(2,4)=11; x(k)=2*k+1; S(2,5)=12; end S(2,6)=13 end S = disp(x); 1 0 0 2 3 4 1 5 3 9 5 13 7 17 1 1 0 11 12 13 0 0 1 8 9 10 11.写出执行以下代码后C,D,E的值 A=[1,2,3;4:6;7:9]; C=[A;[10,11,12]] 8(分别查看第5题两个结果的各方向长度。 D=C(1:3,[2 3]) a=size(H) E=C(2,[1 2]) a = C = 6 3 1 2 3 b=size(S) 4 5 6 7 8 9 b = 10 11 12 3 6 D = 9(分别计算第5题矩阵A和B的A+B、A.* B和A\B。 A=[1 0 0;1 1 0;0 0 1]; 2 3 B=[2 3 4;5 6 7;8 9 10]; 5 6 S1=A+B 8 9 S1 = 3 3 4 E = 6 7 7 8 9 11 4 5 S2=A.*B >> x=[]; for i=100:999 12、输入x,y的值,并将它们的值互换后输出。 n1=fix(i/100); x=input('Input x please:'); y=input('Input y please:'); n2=fix((i-n1*100)/10); z=x; n3=i-n1*100-n2*10; x=y; if (n1^3+n2^3+n3^3)==i y=z; disp(x); x=[x i]; disp(y); end n113.当n=100时,求的值。 y,end ,i,21,1i y=0; 16.用if语句实现下列程序:输入一个百分制成绩,要求n=100; 输出成绩等级为A、B、C、D、E,其中90-100分为A,80-90for i=1:n 分为B,70-79分为C,60-69分为D,60分以下为E。 y=y+1/(2*i-1); function function4() end p=input('请输入分数:'); y if p>=90 disp('A'); 14.某商场对顾客所购买的商品实行打折销售,标准如下 elseif p>=80 (商品价格用price来表示): disp('B'); price<200 没有折扣 200?price<500 3%折扣 elseif p>=70 500?price<1000 5%折扣 disp('C'); 1000?price<2500 8%折扣 elseif p>=60 2500?price<5000 10%折扣 disp('D'); 5000?price 14%折扣 else 输入所售商品的价格,求其实际销售价格。 disp('E'); function function2() end p=input('请输入商品价格'); 17.若一个数等于它的各个真因子之和,则称该数为完数,if p<200 如6=1+2+3,所以6是完数。求[1,10000]之间的全部完rate=0; . 数elseif p>=200&p<500 function function5() rate=3/100; elseif p>=500&p<1000 result = []; rate=5/100; for n = 1:10000 elseif p>=1000&p<2500 divisors = 1:(n/2); rate=8/100; remainder = mod(n, divisors); elseif p>=2500&p<5000 sumDivisors = sum(divisors(remainder == 0)); rate=10/100; else if n == sumDivisors rate=14/100; result = [result, n]; end end p=p*(1-rate) end result 15.一个三位整数各位数字的立方和等于该数本身则称该 18.求[1000,2000]之间第一个能被17整除的整数。 数为水仙花数。输出全部水仙花数。 function function7() function function3() for n = 1000:2000 y3= sin(x1); a=mod(n,17); plot(x,y1, '-r',x,y2, '--g',x1,y3,'*') if a==0 num=n 23.分别在同一图形窗口的不同子图绘制break; yt1sin,,yt2cos,,yt3sin2,, end 在区间上的图像。 yt4sin,0,2,,, end t=0:pi/10:2*pi; subplot(2,2,1) plot(t,sin(t)) subplot(2,2,2) 19. 绘制函数在上的曲线,其yxx,sincos,2,2,,,,,,plot(t,cos(t)) 中曲线为红实线。 subplot(2,2,3) plot(t,sin(2*t)) x=-2:0.1:2; subplot(2,2,4) y=sin(x).*cos(x); plot(t,abs(sin(t))) plot(x,y,'-r') 124.在同一直角坐标系内画出和yx,sin在yxx,sin20.编制MATLAB7.0程序,该程序绘制两条曲线,x的取x值在[0,2pi],以pi/10为步长,一条是正弦曲线,一条区间0.005,10的图形,添加x轴和y轴的简单注解,对,,是余弦曲线,线宽为6个象素,正弦曲线为绿色,余弦曲图形进行文本标注,并尝试不同的线形、颜色; 线为红色,线型分别为实线和虚线。给所绘的两条曲线增 x=linspace(0.005,10,1000); 添图例,分别为“正弦曲线”和“余弦曲线”。 y1=x.*sin(x); x1=0:pi/10:2.*pi; y2=x.*sin(1./x); x2=0:pi/10:2.*pi; plot(x,y1, '-r',x,y2, '--g') y1=sin(x1); xlabel('x'); y2=cos(x2); ylabel('y=xsinx,y=xsin(1/x) '); plot(y1,'-g','linewidth',6); hold on plot(y2,'--r','linewidth',6); yx,cospx25.求函数的5次拟合多项式,并绘制 ,,,,legend('正弦曲线','余弦曲线','Location','North') cosxpx0,2,出和在区间上的图形。 ,,,,,, x=0:pi/10:2*pi; 21.在同一坐标内,分别用不同线型和颜色绘制曲线y=cos(x); ,0.5xyx,0.2ecos4,,和,,1p=polyfit(x,y,5); ,0.5xy1=polyval(p,x); yx,2ecos,x,0,2,,并标记两曲线交叉点。 ,,,,2 plot(x,y,'-r'); x=linspace(0,2*pi,1000); hold on y1=0.2*exp(-0.5*x).*cos(4*pi*x); plot(x,y1, '--g') y2=2*exp(-0.5*x).*cos(pi*x); k=find(abs(y1-y2)<1e-2); x1=x(k); y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); 26.在0?x?2,区间内,绘制曲线y1=2e-0.5x和y2=cos(4plot(x,y1,x,y2,'k:',x1,y3,'bp') πx),并给图形添加图形标注。 x=0:0.01:2*pi; y1=2*exp(-0.5*x); y2=cos(4*pi*x); 22.在同一窗口分别用红色实线和绿色虚线绘制 plot(x,y1,x,y2); xlabel('x(0,2\pi)'); 0,4,yx1sin,yx2cos,和在区间上的曲线,并用星,, 号,标出两条曲线的交点以及建立图例; text(0.5,2*exp(-0.5*0.5)+0.1,'y1=2e^{-0.5x}'); x=linspace(0,4*pi,1000); text(3,cos(4*pi*3)+0.1,'y2=cos(4\pi*x)'); y1=sin(x); legend('y1','y2') y2=cos(x); k=find(abs(y1-y2)<1e-2); x1=x(k); 432与多项式的乘积。 31.求多项式xx,,81023xx,,243232.求多项式除以多项式的结xx,,81023xx,,y1-0.5x果。 y2y1=2e1.5 31和32答案 >> P1=[1,8,0,0,-10]; y2=cos(4,*x)>> P2=[2,-1,3]; 1 >> w=conv(P1,P2); >> [q,r]=deconv(P1,P2); 0.5>> sq=poly2str(q,'x'); >> sq=poly2str(r,'x'); 0>> P1=[1,8,0,0,-10]; >> P2=[2,-1,3]; >> w=conv(P1,P2) -0.5 w = -1 01234567 x(0,2,) 2 15 -5 24 -20 10 -30 >> [q,r]=deconv(P1,P2); 27(随机产生一向量x,求向量x的最大值。 >> sq=poly2str(q,'x') x=rand(); sq = m=max(x) 0.5 x^2 + 4.25 x + 1.375 28(某观测站测得某日6:00时至18:00时之间每隔2小>> sr=poly2str(r,'x') 时的室内外温度(?), 用3次样条插值分别求得该日室内外6:30至17:30时之sr = 间每隔2小时各点的近 -11.375 x - 14.125 似温度(?)。 h=6:2:18; 33.设两个多项式的系数分别为 t=[18,20,22,25,30,28,24,15,19,24,28,34,32,30]'; ab,,5,6,8,2,1,7,3,2,对这两个多项式进行如下,,,, ab,ab,ab/操作:(1);(2);(3);(4)求的积a X1=6.5:2:17.5 b分和的导数。 Y1=interp1(h,t,X1,'spline') a=[5,6,8,2]; b=[1,7,3,2]; m=a+b; 29.某实验对一根长10米的钢轨进行热源的温度传播测w=conv(a,b); 试。用x表示测量点0:2.5:10(米),用h表示测量时间[q,r]=deconv(a,b); 0:30:60(秒),用T表示测试所得各点的温度(?)。试用 sm=poly2str(m,'x') 线性插值求出在一分钟内每隔20秒、钢轨每隔1米处的 温度TI。 sm = 30.说明函数polyfit()的用法,并讨论采用不同多项式 阶数(至少3种)对函数y=0.25*x+20*sin(x)拟合结果 6 x^3 + 13 x^2 + 11 x + 4 的影响。 x=0:2.5:10; sq=poly2str(q,'x') h=[0:30:60]'; T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41]; sq = xi=[0:10]; hi=[0:20:60]'; 5 T1=interp2(x,h,T,xi,hi) >> sr=poly2str(r,'x') sr = dim = -29 x^2 - 7 x – 8 >> p=polyder(b); 6 4 1 5 2 3 >> sp=poly2str(p,'x') sp = x 在附近的根。 35.求fxx,,,,1020x,0.5,,0 3 x^2 + 14 x + 3 >> p=@(x)x-10.^x+2; >> x=fzero(p,0.5) 34.,求 x,521637,, (1)各元素的和 x = x (2)各元素的积 x (3)的累乘积向量 0.3758 x (4)向量的算术平均值和中值 x (5)对中的元素按降序排列的新向量。 >> x >> x=[5 2 1 6 3 7]; >> s=sum(x) x,136(针对函数 yxx,,sin,0,10,,,,,2 x,1s = (1)绘制其图象; (2)并计算最大值、最小值和零点; 24 (3)计算yx在0,10上的积分。 ,,,, y=@(x)sin((x+1)./(x.^2+1)); >> p=prod(x)fplot(y,[0,10]) p = [xmin,yval] = fminbnd(y,0,10) 1260 xmin = >> c=cumprod(x) 10 c = yval = 5 10 10 60 180 1260 0.1087 f=@(x)(-sin((x+1)./(x.^2+1))); >> m=mean(x) [xmax,fmax]=fminbnd(f,0,10) m = xmax = 4 0.4142 >> md=median(x) fmax = md = -0.9346 4 >> [sortx,dim]=sort(x,'descend') ymax=-ymax fmax = sortx = 0.9346 7 6 5 3 2 1 [x,yva]=fzero(y) g = x = x^3+6*x^2+3*x+5 -1 .>> el=sym(f+g) el = yva = x^4+8*x^2+6+x^3+3*x 0 q=quad(y,0,10)>> e2=sym(f*g) q = e2 = 3.4354 (x^4+2*x^2+1)*(x^3+6*x^2+3*x+5) 2 37. 计算微分方程 且初始值yyy,,1't,0,2,,,,,, 为0的解。 >> R=factor(f) 3R = 38.求在内的最小值点。 fxxx,,,250,5,,,, (x^2+1)^2 f=@(x)(x.^3-2*x-5); [xmin,fval]=fminbnd(f,0,5) >> finverse(g) Warning: finverse(x^3+6*x^2+3*x+5) is not unique. > In sym.finverse at 43 xmin = ans = 1/2*(-60+4*x+4*(117-30*x+x^2)^(1/2))^(1/3)+6/(-60+4*x+ 0.8165 4*(117-30*x+x^2)^(1/2))^(1/3)-2 >> fval = 0,840(求在上的定积分; sin()xx,,, ,2x,ed,x求定积分; , -6.0887 ,, >> syms x >> R1=int(sin(x)+x,0,8) 42fxxx,,,2139(设x为符号变量,,,, R1 = 32gxxxx,,,,635,试进行如下运算。 ,, -cos(8)+33 fxgx, (1), ,,,, fxgx,(2), ,,,, >> R2=int(exp(-x^2),-inf,inf) fx(3)对进行因式分解, ,, R2 = gx(4)求的反函数。 ,, >> syms x; pi^(1/2) >> f=x^4+2*x^2+1 f = 5 41(求符号表达式的5次微分; sin()xx,x^4+2*x^2+1 >> syms x >> f=sin(x)+x^5; >> df=diff(f,5) >> g=x^3+6*x^2+3*x+5 df = ,求该44(已知yyyyy''2'20,(0)1,'(0)1,,,,, 方程的解。 cos(x)+120 >> y=dsolve('D2y+2*Dy+2*y=0','Dy(0)=1','y(0)=1','x') y = >> xxy,,,0.7sin()0.2cos()0,2*exp(-x)*sin(x)+exp(-x)*cos(x) 42(求解非线性方程组 , yxy,,,0.7cos()0.2sin()0, >> Sy=simple(y) 32512xxx,,,,123 ,Sy = 24xxx,,,求线性方程组的解; ,123 ,428xxx,,,123,exp(-x)*(2*sin(x)+cos(x)) >> s=solve('x-0.7*sin(x)-0.2*cos(y)=0','y-0.7*cos(x)+0.2*sin(y) >> =0','x','y'); >> disp('s.x') s.x 1612345. 简化fx,,,,8 ,,>> disp(s.x) 32xxx.52652262191818418730769280519209 >> syms x >> f=(1/x^3+6/x^2+12/x+8)^(1/3) >> disp('s.y') s.y f = >> disp(s.y) .50791971903684924497183722688768 (1/x^3+6/x^2+12/x+8)^(1/3) >> simple(f) >> simplify: S=solve('3*x1-2*x2-5*x3=12','2*x1-x2+x3=4','4*x1+x2-2*x 3=8','x1','x2','x3') ((2*x+1)^3/x^3)^(1/3) S = radsimp: x1: [1x1 sym] x2: [1x1 sym] (2*x+1)/x x3: [1x1 sym] >> disp('S.x1') combine(trig): S.x1 >> disp(S.x1) ((1+6*x+12*x^2+8*x^3)/x^3)^(1/3) 80/43 >> disp('S.x2') factor: S.x2 >> disp(S.x2) ((2*x+1)^3/x^3)^(1/3) -48/43 >> disp('S.x3') expand: S.x3 >> disp(S.x3) (1/x^3+6/x^2+12/x+8)^(1/3) -36/43 >> combine: (1/x^3+6/x^2+12/x+8)^(1/3) >> S1=vpa(s1,10) convert(exp): S1 = (1/x^3+6/x^2+12/x+8)^(1/3) 1.634983900 convert(sincos): >> s2=symsum(1/n^2,n,1,inf); (1/x^3+6/x^2+12/x+8)^(1/3) >> S2=vpa(s2,10) S2 = convert(tan): 1.644934068 (1/x^3+6/x^2+12/x+8)^(1/3) >> collect(x): >> syms n x >> s2=symsum(x/n^2,n,0,inf) (1/x^3+6/x^2+12/x+8)^(1/3) s2 = mwcos2sin: sum(x/n^2,n = 0 .. Inf) 2(1/x^3+6/x^2+12/x+8)^(1/3) x 49.设fxgyyt(), ()cos(2),,,,求复合函数 1,u f(g(z))。 ans = syms x u y t z f=x^2/(1+u); (2*x+1)/x g=cos(y+2*t); lnlnxhx,,,,,,46.计算和 fz=ztrans(f,x,z) L,limh,0h nfz = x,, lim1,,M ,,,,nn,,1/(1+u)*z*(z+1)/(z-1)^3 >> syms x h >> l=limit((log(x+h)-log(x))/h,h,0) >> l = 2 ,z,z2231/x 50(计算的和。 zyxyxy,,,32,y,,yx syms x y >> syms x n z=y*x^2+3*y^2*x+2*y^3; >> m=limit((1-x/n)^n,n,inf) dfy=diff(z,'y') m = dfy = exp(-x) x^2+6*y*x+6*y^2 >> df=diff(dfy,'x') >> df = , 147.计算级数 及其前100项的部分和 S,2*x+6*y ,2nn1, ,x14813,,543,2,,计算函数级数 ,S,2,,,,nn1,A,,36,5,9B,6,23,84(设,,,,,,>> syms n ,,,13,97,,2,7,12,8,,,,>> s1=symsum(1/n^2,n,1,100); 求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆k=mean(a) 阵。 k1=mean(k) >> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; i=ones(8,6) >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; i1=i*k1 >> C1=A*B' i2=a-i1 C1 = i3=i2.*i2 19 -82 30 g=mean(i3) 12 27 3 g2=mean(g) -38 54 29 >> C2=A'*B 或者 C2 = u=reshape(a,1,48); -15 16 -24 36 p1=mean(u) 63 -17 93 -105 p2=var(u) 22 6 117 -60 19 46 84 -10 7.设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数>> C3=A.*B t=0~10区间生成的x~y曲线。 C3 = >> t=linspace(0,10); 5 16 24 -26 >> r1=2; -18 -12 -15 72 >> x1=(r1*cos(t)+3*t); -2 -21 108 -56 >> y1=r1*sin(t)+3; >> inv(C1) >> r2=3; ans = >> x2=(r2*cos(t)+3*t); 0.0062 0.0400 -0.0106 >> y2=r2*sin(t)+3; -0.0046 0.0169 0.0030 >> r3=4; 0.0168 0.0209 0.0150 >> x3=(r3*cos(t)+3*t); >> inv(C2) >> y3=r3*sin(t)+3; Warning: Matrix is close to singular or badly scaled. >> plot(x1,y1,'r',x2,y2,'b',x3,y3,'m') Results may be inaccurate. RCOND = 8.997019e-019. ans = 1.0e+015 * -0.9553 -0.2391 -0.1997 0.2700 0.9667 0.2420 0.2021 -0.2732 -0.4473 -0.1120 -0.0935 0.1264 -1.1259 -0.2818 -0.2353 0.3182 >> inv(C3) ??? Error using ==> inv Matrix must be square. 542- 4x +3x- 2x+ 6 8.设f(x)=x ,3sinx,(1) 在x=[-2,8]之间取100个点,画出曲线,看它y,cosx0.5,5(设 ,把x=0~2π间分为101,,2有几个过零点。(提示:用polyval 函数) (1,x),,>> x=linspace(2,8,100); 点,画出以x为横坐标,y为纵坐标的曲线。 >> y=polyval([1 0 -4 3 -2 6],x); >> x=linspace(0,2*pi,101); >> plot(x,y,'b',x,0,'y') >> y=cos(x)*(0.5+(1+x.^2)\3*sin(x)); >> plot(x,y,'r') 6(产生8×6阶的正态分布随机数矩阵R1, 求其各列的 平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var) a=randn(8,6) mean(a) var(a) x1=-3:0.01:-1;y1=(-x1.^2-4.*x1-3)/2; x2=-1:0.01:1;y2=-x2.^2+1; x3=1:0.01:3;y3=(-x3.^2+4.*x3-3)/2;plot(x1,y1);hold on; plot(x2,y2);hold on; plot(x3,y3) 1.设,求 x=sym('x'); y=x*exp(2*x);diff(y,20) 2.设,求 x=sym('x'); y=(sin(x))^4+(cos(x))^4;diff(y,10) 3.设,求 x=sym('x'); (2) 用roots函数求此多项式的根。 y=sym('y');z=y^4*((sin(x))^4)+x^4*((cos(y))^4);int=[1 0 -4 3 -2 6] t(z,x) p=roots(t) 1Matlab上机实验二 4(dx22,2.设x=sint, y=sin(nt+a), (x,1)(x,x) (1) 若a=1,令n =1,2,3,4,在四个子图中分别画出x=sym('x');int(1/(x^2+1)*(x^2+x),x) 其曲线。 23x(9,)(2) 若n=2,取a=0,π/3,π/2,及π,在四个子图5( dx6,x中分别画出其曲线。 x=sym('x');int((sqrt((9-x^2)^3)/x^6),x) (1) 2dxa=1; 6( 3,1x=sin(t);y1=sin(1*t+a);y2=sin(2*t+a);y3=sin(3x,x *t+a);y4=sin(4*t+a); x=sym('x');int(x+x^3,x,1,2) ,subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot2n,7.求级数的和: ,n(x,y2);subplot(2,2,3);plot(x,y3);subplot(2,2,2n1,4);plot(x,y4) sym(‘n’);symsum(n+2/2^n,n,1,inf) (2) n=2;x=sin(t);y1=sin(2*t+0);y2=sin(2*t+pi/3);y,xy8.利用函数int计算二重不定积分 (x,y)edxdy,,3=sin(2*t+pi/2);y4=sin(2*t+pi);subplot(2,2,1) ;plot(x,y1);subplot(2,2,2);plot(x,y2);subplotx=sym('x'); (2,2,3);plot(x,y3);subplot(2,2,4);plot(x,y4) y=sym('y');z=(x+y)*exp(-x*y);a=int(z,x);int(a,y) 注:本题好像题目本身就有问题,因为“t” 取值不 明,所以运行不了,画不出图来。转化为符号式来画Matlab上机实验四 图也是不可行的。(纯粹个人意见,可能我想错了方1. 编写一个M函数文件计算下列级数的和: 向,会做的同学请上传一下正确的做法) x和n的值由input指令给出。 222,(x,y)z,xe3(绘制在定义域x=[-2,2],y=[-2,2]内的%test.m 曲面。(利用meshgrid)x=-2:2;y=x;[X,Y]= function f=test meshgrid(x,y);Z=X^2*exp(-(X^2+Y^2));mesh(X,Y,Z) x=input('Input the x:\n'); 54324(求代数方程3x+4x+7x+2x+9x+12=0的所有根。(利用 n=input('Input the n:\n'); roots函数) j=1; p=[3 4 7 2 9 12];roots(p) f2=0; 55(把1开五次方,并求其全部五个根。(提示:解x-1=0) for i=1:n; p=[1 0 0 0 0 -1];roots(p) j=1; for k=1:i; 2 j=j*k; ,xxx(,,4,3)/2,3,,,1 f1=x^i/j; ,2yxx,,,1,1,,16,,画出在,end 2,xxx(,,4,3)/21,,3f2=f2+f1; , end ,,,3,3上的曲线。 f=f2+1; 2(编制m文件,等待键盘输入,输入密码123,密码正 求100到200之间,第一个77的整倍数 确,显示输入密码正确,程序结束;否则提示,重新输入。 6(编写m函数文件求半径为r的圆的面积和周长。 function f=circle(r) 方法一: S=pi*r^2 function f=check L=2*pi*r password=input('Please input the password:\n'); 7(数组[1:99]中素数(即质数)元素的和 if (password==123) disp(‘输入密码正确’) %第一m文件(用于判断某数是否为素数): else function leap=panduan(n) check; leap=1; end for i=2:sqrt(n+1) if mod(n,i)==0 方法二: leap=0; function pw break; n=0; end k=0; end n=input('请输入密码(整数)\n'); %第二个m文件(用于读进1,99并调用panduan.m判断while(k==0) 读数是否为素数,并把是素数的加起来,最后输出): if n==123 function total(n) disp('输入正确') k=0; k=1; for m=1:n else if panduan(m)==1 k=0; k=k+m; n=input('密码错误,请重新输入密码(整数)\n'); end end end end k 3(编制m文件,输入n(正整数),显示所有小于n的质8(从键盘输入若干个数,当输入0时结束输入,求这些数。 数的平均值以及平方和。 %第一m文件(用于判断某数是否为素数): % 求n个数的平均值及平方和 function leap=panduan(n) function pingfang1 leap=1; l=0; for i=2:sqrt(n+1) total1=0; if mod(n,i)==0 total2=0; leap=0; a=input('input a:\n'); break; while(a~=0) end l=l+1; end total1=total1+a; %第二个m文件(用于读进n个数并调用panduan.m判断 total2=total2+a^2; 读数是否为素数,并把是素数的显示出来): a=input(''); function zhishu(n) end for m=2:n avg=total1/l if panduan(m)==1 total2 disp(m); 9(输入x,y的值,并将它们的值互换后输出。 end function f=change(x,y) end x=input('Input x:\n'); 4(编写一个M函数文件fun_es(x),计算如下函数:y=input('Input y:\n'); x/32,其中参数可以为标量,也可以y,0.5e,xsin(x)a=x;x=y;y=a; x,y 为向量。在Matlab指令窗口键入如下命令检验该函数: 10(利用rand产生10个随机数,利用for循环对其进行 fun_es(3) 排序(从大到小)。 function fun_es(x) disp('排列前:') y=0.5.*exp(x./3)-x.^2.*sin(x) a=rand(10,1) 5(下面程序实现什么功能, for i=1:10 for n=100:200 for j=1:10-i if rem(n,77)~=0 if a(j+1,1)>a(j,1) continue b=a(j,1);a(j,1)=a(j+1,1);a(j+1,1)=b; end end break end end end n disp('排列后:') a 为向量。在Matlab指令窗口键入如下命令检验该函数: 1. 编写一个M函数文件计算下列级数的和: fun_es(3) x和n的值由input指令给出。 function y=jiecheng(n) function f=fun_es(n) %定义 jiecheng函数 s=1; f=0.5.*exp(n./3)-n.*n.*sin(n); for i=1:n s=s*i; //use the dot not only adapt to numbers but also end matrix y=s; function zy1 5(下面程序实现什么功能, x=input('请输入x值:'); for n=100:200 n=input('请输入n值:'); if rem(n,77)~=0 m=1; continue i=0:n; end for m=m+x.^i/jiecheng(i); %调用上面break 的公式 end end n m //实现输出在100到200之间第一个被77整除的数字,2(编制m文件,等待键盘输入,输入密码123,密码正就是154; 确,显示输入密码正确,程序结束;否则提示,重新输入。 6(编写m函数文件求半径为r的圆的面积和周长。 function f=zy2() function f=myzy6 t=input('Input key(key is 123) ') r=input('Input r: ') disp('The aear is :') if t==123 disp(r*r*pi) 'good' disp('The perimeter is') else disp(2*pi*r) 'Your are fool,input again' 7(数组[1:99]中非素数(即质数)元素的和 zy2; //从新输入; //在这个函数中令n=99即可; end function myzy32(n) 3(编制m文件,输入n(正整数),显示所有小于n的质sum=0;function myzy32(n) 数。 for i=2:n function f=myzy31(n) if myzy31(i)==1//调用myzy31,判断是否是素数,k=sqrt(n); 如果是就输出; flag=1; i for i=2:k; sum=sum+i;//求和 if mod(n,i)==0 else flag=0; i; //i后面有“;”就是不输出了; break; end end end end sum//求和输出; f=flag;//判断一个数字是否是素数; for i=2:n if myzy31(i)==1//调用myzy31,判断是否是素数,function myzy32(n) 如果是就输出; for i=2:n i if myzy31(i)==1//调用myzy31,判断是否是素数, y=y+1; 如果是就输出; else i i; //i后面有“;”就是不输出了; else end i; //i后面有“;”就是不输出了; end end 8(从键盘输入若干个数,当输入0时结束输入,求这些end 数的平均值以及平方和。 4(编写一个M函数文件fun_es(x),计算如下函数:function myzy8 x/32y,0.5e,xsin(x),其中参数可以为标量,也可以sum=0; sum2=0; x=linspace(-2,8,100); n=2; y=polyval(p,x);while (n~=0) plot(x,y); k=input('input the number(end with 0) : ') axis([-2,8, -200,2300]); 为了便于观察,在y=0处画直线,图如下所示: sum=k+sum; sum2=k.^2+sum2; n=k;//标志位传递; end sum sum2 //输出; 9(输入x,y的值,并将它们的值互换后输出。 function myzy8 x=input(‘Please input the x: ’) y=input(‘Please input the y: ’) t=x; //保护数据; x=y; y=t; disp(“after change :”) 与y=0直线交点有两个,有两个实根。 x (2)用roots函数求此多项式的根 y //输出; >> a=roots(p) 10(利用rand产生10个随机数,利用for循环对其进行a = 3.0000 ,1.6956 , -0.3478 + 1.0289i , 排序(从大到小)。 -0.3478 - 1.0289i function myzy10 //输入10即可; 4、在[-10,10;-10,10]范围内画出函数 的三维图形。 k=input('Input the number of randn numbers: ') x=randn(1,k) temp=0; for j=1:k-1; for i=k-j:k-1; if x(i)>[X,Y]=meshgrid(-10 : 0.5 :10); t=x(i); a=sqrt(X.^2+Y.^2) +eps; x(i)=x(i+1); Z=sin(a)./a; x(i+1)=t; mesh(X,Y,Z); else end end end MATLAB 考试试题 (1) 产生一个1x10的随机矩阵,大小位于(-5 5),并且按 照从大到小的顺序排列好~(注:要程序和运行结果的截 屏) 答案: 32a=10*rand(1,10)-5; s,2s,s,3G(s), [例2.4] 给定系统,求系统32b=sort(a,'descend') s,0.5s,2s,1 的零极点增益模型和状态空间模型,并求其单位脉冲响应3、及单位阶跃响应。 设 f(x)=x^5-4x^4+3x^2-2x+6 解: num=[1 2 1 3];den=[1 0.5 2 1]; (1)取x=[-2,8]之间函数的值(取100个点),画出曲 线,看它有几个零点。 sys=tf(num,den) %系统的传递函数模型 (提示:用polyval 函数) Transfer function: 解:>>p=[1 -4 3 -2 6]; s^3 + 2 s^2 + s + 3 ----------------------------- s^3 + 0.5 s^2 + 2 s + 1 (2)编写一个函数,使其能够产生如下的分段函数:sys1=tf2zp(num,den) %系统的零极点增益模型 0.5x,x,2,sys1 = ,sys2=tf2ss(sys) %系统的状态空间模型模型;或用f(x),1.5,0.25x,2,x,6, , [a,b,c,d]=tf2ss(num,den)形式 ,0.5,6,x,impulse(sys2) %系统的单位脉冲响应 并调用此函数,绘制step(sys2) %系统的单位阶跃响应 。(10分) 在x,[0,,2]范围的f(x),f(x,2)曲线[例3.1] 对下面系统进行可控性、可观性分析。 解: 答:function y=f(x) a=[-1 -2 2;0 -1 1;1 0 -1];b=[2 0 1]';c=[1 2 0] if x<=2 y=0.5*x; Qc=ctrb(a,b) %生成能控性判别矩阵 else if x>6 rank(Qc) %求矩阵Qc的秩 y=0.5; ans = 3 %满秩,故系统能控 else y =1.5-0.25*x; Qo=obsv(a,c) %生成能观测性判别矩阵 end rank(Qo) %求矩阵Qo的秩 end ans = 3 %满秩,故系统能观测 运行结果 x=2 [例3.2] 已知系统状态空间方程描述如下: f(x)=1 试判定其稳定性,并绘制出时间响应曲线来验证上述判x = 0:0.05:2; 断。 y = diag(A2(x)'*A2(x+2)); 解: plot(x,y); A=[-10 -35 -50 -24;1 0 0 0;0 1 0 0;0 0 1 0]; xlabel('\bfx'); B=[1;0;0;0];C=[1 7 24 24];D=[0]; ylabel('\bfy'); [z,p,k]=ss2zp(A,B,C,D,1); Flagz=0; n=length(A); for i=1:n if real(p(i))>0 Flagz=1; end end disp('系统的零极点模型为');z,p,k 系统的零极点模型为 (3) 将一个屏幕分4幅,选择合适的步长在右上幅与左下幅绘if Flagz==1 制出下列函数的图形。(10分) disp('系统不稳定'); ,,cos(x),x,[,,]?(曲线图); ?22else disp('系统是稳定的'); 22xyend f(x,y),,;(-2,x,2,-4,y,4)(曲面图)。 2224运行结果为: 答:>> subplot(2,2,2) 系统是稳定的 >> ezplot('(cos(x))^(1/2)',[-pi/2 pi/2]) >> ylabel('y') step(A,B,C,D) ,系统的阶跃响应 min = >>subplot(2,2,3) >> x=-2:0.5:2; -5 >> y=-4:1:4; >>ezsurfc('x^2/2^2+y^2/4^2') (4) A 是一个維度m×n的矩阵. 写一段程序, 算出A中有多少个零元素(10分) 答:>> A= input ('请输入一个矩阵') [m,n]= size(A); sig=0; for i=1:m for j=1:n if A(i,j)==0 sig = sig+1; end end end 请输入一个矩阵[0 1 2;1 0 2; 0 0 0] A = 0 1 2 1 0 2 0 0 0 >> sig sig = 5 A,[a,a,?,a]11n(5) 向量. 写一段程序, 找出A中的最小元素(10分)答:A= input ('请输入一个向量') [m,n]=sizeA min =A(1,n); for i=1:n if A(1,i)
/
本文档为【matlab上机习题详解_试题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索