在MATLAB帮助文件中查找有关title的使用方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在MATLAB 帮助文件中查找有关title 的使用方法,并为y1对应的图形添加标题 y1=sin(t) ;为y2对应图形添加标题 y2=e -at cos(3t),其中a 根据输入显示具体值(使用num2str 函数)。
请写出有关指令。
t=0:pi/20:4*pi; y1=sin(t);
a=input('Ë¥¼õa=' ); y2=exp(-a*t).*cos(3*t)
plot(t,y1,'r','LineWidth',2),axis([0, 4*pi, -2,2 ]); xlabel('t'),ylabel('y'); title('y1=sin(t)')
figure( );
plot(t,y2,'r','LineWidth',2); axis([0, 4*pi, -2,2 ]); xlabel('t'),ylabel('y');
title(['y2=','e^{-',num2str(a),'t}','cos(3t)'])
1. 要求在闭区间[0,2Π]上产生具有10个等距采样点的一维数组,分别使用冒号生成法和定点生成法。
x=0:2*pi/(10-1):2*pi; y=linspace(0,2*pi,10);
2. 运行clear, rand('state',1),A=rand(10,10) 1)记录A(8)的结果,进行分析。
2)提取A 矩阵中位于第5列的所有元素构成的矩阵B ,提取A 矩阵中位于第2到6行且位于第3到7列的子矩阵D 。
提取A 矩阵中位于第1,3,6行且位于第2,4,6行的子矩阵E 。
3)将E 矩阵按行从上到下的次序首位相接生成“一维长行”数组。
clear,rand('state',1);A=rand(10,10); A(8) B=A(:,5) D=A(2:6,3:7)
E=A([1,3,6],[2,4,6]) E1=E';E2=E1(:)'
3. 在时间区间[0,10]中,绘制t e y t 2cos 15.0--=曲线,要求采用数组运算法编写程序绘图。
t=0:0.1:10;
y=1-exp(-0.5*t).*cos(2*t); plot(t,y) xlabel('t'); ylabel('y(t)');
4. 用间距为0.1的水平线和垂直线均匀分割]
5.2,5.2[],5,5[-∈-∈y x 的矩形域,在所有水平线和垂直线交点上计算函数||sin xy z =,并图示。
要求采用向量化编程。
x=-5:0.1:5;y=-2.5:0.1:2.5;
[X,Y]=meshgrid(x,y);
Z=sin(abs(X.*Y));
surf(X,Y,Z);
shading interp;
xlabel('x');ylabel('y');zlabel('z');
1.运行clear, rand('state',1),A=rand(3,3)
1)编写指令,获得一个对角矩阵B,其相应元素由A的对角元素构成2)编写指令,获得一个矩阵C,其对角元素全部为零,其余元素与A对应元素相同。
(使用diag函数)
clear,rand('state',1),A=rand(3,3);
B=diag(diag(A))
C=A.*(~eye(3))
2. 运行clear, rand('state',1),A=rand(3,5)生成二维数组A,编写指令对A矩阵进行以下操作,记录相应的结果。
1)对A矩阵旋转180度,保存为B;
2)将A矩阵排成5行3列,保存为C;
3)将A矩阵删除第2及4列,保存为D;
4)求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。
(使用find和sub2ind函数)
clear,rand('state',1),A=rand(3,5);
B=rot90(A,2)
C=reshape(A,5,3)
D=A;
D(:,[2 4])=[]
[m,n]=find(A>0.5)
L=sub2ind(size(A),m,n)
3. 运行以下指令
x=-3*pi:pi/15:3*pi;
y=x;
[X,Y]=meshgrid(x,y); warning off;
Z=sin(X).*sin(Y)./X./Y;
1)记录[X,Y],理解meshgrid函数的意义。
2)继续编写指令求出矩阵Z中有多少个“非数”数据。
3)用指令surf(X,Y,Z);shading interp观察所绘图形。
4)写出绘制相应“无裂缝”图形的全部指令,并保存为.m文件。
x=-3*pi:pi/15:3*pi;
%x=x+(x==0)*eps;
y=x;
[X,Y]=meshgrid(x,y); warning off;
Z=sin(X).*sin(Y)./X./Y;
sum(sum(isnan(Z))) surf(X,Y,Z);shading interp xlabel('x') ylabel('y') zlabel('z')
1. 给定一个函数2
)(t e t f -=,利用diff 及gradient 函数近似求)(t f 的导函数
)()
(t f dt
t df '=,并将函数)(t f 和其导函数曲线绘制在一个图中,同时给出两种方法得到的导函数曲线的细节图,并进行对比。
clear;t=0:0.1:10; y=exp(-t.^2); dif=diff(y)/0.1;
grad=gradient(y)/0.1; subplot(1,2,1);
plot(t(1:end-1),dif,t,grad);
legend('dfdt_{diff}','dfdt_{gradient}') xlabel('t'); subplot(1,2,2);
plot(t(end-10:end-1),dif(end-9:end),'.k',t(end-9:end),grad(end-9:end),'or') legend('dfdt_{diff}','dfdt_{gradient}'); xlabel('t');
2. 利用sum 、trapz 、及quad 函数求⎰=5
)(dt t f S ,其中)(t f 与第1题中相
同。
记录结果,要求quad 的计算结果达到绝对精度为10-9。
观察各函数计算结果之间的差异。
clear;format long ; t=0:0.1:5; y=exp(-t.^2); s1=sum(y)*0.1 s2=trapz(t,y)
quad('exp(-t.^2)',0,5,1e-9)
3. 利用函数cumsum 和cumtrapz 求⎰=x
dt t f x y 0
)()(,其中)(t f 与第1题中相
同。
将两者计算结果及它们的误差绘制在同一个图中,同时给出误差的细节图。
在以上题目中要求在图中为曲线添加相应的图例,原函数曲线用细线,其他曲线用粗线。
clear;format long ; t=0:0.1:5; y=exp(-t.^2);
s1=cumsum(y)*0.1; s2=cumtrapz(t,y); subplot(1,2,1);hold on ; plot(t,y)
plot(t,s1,'-k','LineWidth',2); plot(t,s2,'-r','LineWidth',2); plot(t,s1-s2,'-g','LineWidth',2); xlabel('t');
legend('Ô-º¯Êý','cumsum»ý·Ö','cumtrapz»ý·Ö','Îó²î'); subplot(1,2,2);
plot(t,s1-s2,'LineWidth',2); xlabel('t');
axis([0,5,0.04,0.11])
1.设1)(2)(3)(2
2=+-t y dt t dy dt t y d ,1
)0(=y ,1)
0(=dt dy ,求解)(t y 。
绘制)(t y 的曲线,绘出)(t y 与)(t y '之间关系的相平面图。
给出)5.0(y 的具体数值。
t 范围限制在[0 2.5]。
clear;
t=0:0.01:2.5; y0=[1;1];
[tt,yy]=ode45(@DyDt,t,y0); plot(tt,yy(:,1)); xlabel('t');ylabel('y'); figure;
plot(yy(:,1),yy(:,2)); xlabel('t');ylabel('dydt');
function ydot=DyDt(t,y) ydot=[y(2);-2*y(1)+3*y(2)+1]; end
2.求以下方程组的解1) ⎪⎪⎩⎪⎪⎨⎧=--+=-+=-++=++184/102/2/d n p q p n d q p q d n q p n d 2)⎪⎪⎩⎪
⎪⎨⎧-=--+=--+=-++=-++-5.385.04/31d n p q p n d q p q d n q p n d
clear;
A=[1 -1 1/2 1/2;1 1 1 -1;1 1 -1/4 1;-8 1 -1 1]; b=[0 10 0 1]';
rank(A) rank([A,b]) B=A\b; clear;
A=[-1 1 1 -1;1 1 -1 1;1 -1/4 -1 1;-8 -1 1 1]; b=[1 3 0.5 -3.5]'; rank(A) rank([A,b]) B=A\b; C=null(A); A*(rand(1)*C+B) b
1.求函数5.08.1)2cos(5.1))5(sin()(2
06.02++-=t t t e t t f t 在区间[-5,5]中的最小值点。
clear; t=-5:0.1:5;
f=(sin(5*t)).^2.*exp(0.06*t.^2)-1.5*t.*cos(2*t)+1.8*(abs(t+0.5)); plot(t,f)
f1=@(t)((sin(5*t)).^2.*exp(0.06*t.^2)-1.5*t.*cos(2*t)+1.8*(abs(t+0.5))); [sx,sfval,sexit,soutput]=fminbnd(f1,-5,5)
2. 求0))sin(sin(105.02.0=-+--t e t t 的实数解。
clear;
t=-5:0.1:5;
f=-0.5+t-10*exp(-0.2*t).*abs(sin(sin(t))); plot(t,f)
f1=@(t)(-0.5+t-10*exp(-0.2*t).*abs(sin(sin(t)))); %[x,fval]=fsolve(f1,1) %ûÓÐÕÒµ½ [x,fval]=fsolve(f1,2) %ÕÒµ½
3. 使用字符串、内联对象、匿名函数或函数文件的句柄四种方式求二元函数方
程组⎩⎨⎧=+=-0
)cos(0)sin(y x y x 的数值解clear all
x0=[0.5 0.5]
[x,fval]=fsolve('[sin(x(1)-x(2)),cos(x(1)+x(2))]',x0)
f=inline('[sin(x(1)-x(2)),cos(x(1)+x(2))]'); [x,fval]=fsolve(f,x0)
f=@(x)([sin(x(1)-x(2)),cos(x(1)+x(2))]);
[x,fval]=fsolve(f,x0)
[x,fval]=fsolve(@myfun,x0)
function f=myfun(x)
f=[sin(x(1)-x(2)),cos(x(1)+x(2))];
1.假定某窑工艺瓷器的烧制成品合格率为0.157,现用该窑烧制100件瓷器,请画出合格产品数的概率分布曲线。
clear;
N=100;p=0.157;
k=0:N;
pdf=binopdf(k,N,p);
plot(k,pdf,'.-k');
xlabel('k')
ylabel('P')
2.产生均值为4,标准差为2的(10000*1)正态分布随机数组a,分别用hist
和histfit绘制该数组的频数直方图,观察两张图的差异。
除histfit上的拟合红线外,如何使这两个指令绘出相同的频率直方图。
clear;
N=10000;Mu=4;Sigma=2;
%x=randn(N,1)
%y=Mu+Sigma*x;
y=normrnd(Mu,Sigma,1,N);
figure();
hist(y,100);
xlabel('x')
ylabel('P')
figure();
histfit(y);
xlabel('x')
ylabel('P')
3.根据文件prob_data418.mat的数据,求出这组数据的5阶拟合多项式。
根据求得的多项式函数计算y值,并与实测y值比较,统计两者之间误差的均值及方差。
s=importdata('prob_data418.mat')
x=s.x;
y=s.y;
P=polyfit(x,y,5)
yy=polyval(P,x);
plot(x,y,'.r',x,yy,'k')
xlabel('x')
ylabel('y')
err=abs(y-yy); em=mean(err) ev=var(err)
4.有理分式)
()()(x D x N x R =
,其中)5.0)(3()(33++=x x x x N ,
)125)(22()(232++-+=x x x x x D ,求该分式的商多项式)(x Q 和余多项式)(x r 。
N=conv([3 0 1 0],[1 0 0 0.5]);D=conv([1 2 -1],[5 2 0 1]); [Q r]=deconv(N,D)
1. 已知函数[]
111021)sin(1)()()(>=<≤⎪⎪⎪⎩⎪
⎪⎪⎨⎧-=+-----ξξξβ
βββξβξξt t t
t
e e te t e t y ,其中21ξβ-=。
试在同一张图上绘出4.1:2.0:2.0=ξ不同取值时的各条曲线,时间区间为]18,0[∈t 。
要求1<ξ的各条曲线用蓝色,1>ξ的用红色,1=ξ的用黑色,且线较粗。
2.0=ξ及4.1=ξ的两条曲线添加text 标志。
如图所示。
clear;
t=0:0.01:18; figure(1);hold on ;
x
y
for z=0.2:0.2:1.4 b=sqrt(abs(1-z^2)); if (z<1)&(z>=0)
y=1/b*exp(-z*t).*sin(b*t); plot(t,y,'-b'); elseif z>1
y=1/2/b*(exp(-(z-b)*t)-exp(-(z+b)*t)); plot(t,y,'-r'); elseif z==1 y=t.*exp(-t);
plot(t,y,'k','LineWidth',3); end end
text(2.5,0.6,'\zeta=0.2') text(0.5,0.15,'\zeta=1.4') text(10,0.7,'\Delta\zeta=0.2') grid on ; box on ;
axis([0 18 -0.4 0.8]) xlabel('x') ylabel('y')
2. 使用极坐标绘图指令polar 绘制表达式θρcos 1-=对应的心形图,如图所示。
the=0:pi/100:2*pi; P=1-cos(the);
h=polar(the,P);%·µ»ØÏߵľä±ú set(h,'LineWidth',3)
90270
180
P=1-cos(θ)
title('P=1-cos(\theta)')
3. 使用双纵坐标在同一张图上绘出函数x x x y sin )(=及其积分
⎰=x
dt t y s 0
)(,要求标注横、纵坐标,两条曲线均使用plot 绘图指令,曲线宽度
为3号。
x=0:0.1:4; y=x.*sin(x); s=cumtrapz(x,y);
[AX,H1,H2]=plotyy(x,y,x,s) %AX×ø±êÖáµÄ¾ä±ú£¬H1ºÍH2Á½¸ö»æͼָÁîµÄͼÐζÔÏóµÄ¾ä±ú
set(get(AX(1),'Ylabel'),'String','\fontsize{14}y(x)=xsinx'); %set(AX(1),'FontSize',20,'FontAngle','italic');
set(get(AX(2),'Ylabel'),'String','\fontsize{14}\int_0^xy(t)dt'); xlabel('x');
set(H1,'LineWidth',3) set(H2,'LineWidth',3) grid on ;
1.绘制)sin(t x =,)cos(t y =,t z =的三维曲线如图所示。
要求曲线为绿色实线,坐标轴字体为斜体,字体大小适当。
-5
05
y (x )=x s i n x
x
⎰0x y (t )d t
t=0:pi/100:4*pi; x=sin(t); y=cos(t); z=t;
plot3(x,y,z,'g','LineWidth',3); %h=get(gcf,'CurrentAxes')
set(gca,'FontSize',14,'FontAngle','italic') box on ;
xlabel('\fontsize{24}x') ylabel('\fontsize{24}y') zlabel('\fontsize{24}z')
2. 在区域]3,3[,-∈y x ,绘制2
24y x xe
z --=的三维(透视)网格曲面,如图所
示。
要求,透明度设置为0.5,坐标轴范围与图示一致。
x
y
z
x=-3:0.1:3;
y=x;
[X,Y]=meshgrid(x,y);
Z=4*X.*exp(-X.^2-Y.^2);
surfc(X,Y,Z);
colormap(cool);
box on ;
%xlim([-3 3]);
%ylim([-3 3])
axis([-3 3 -3 3 -2 2]);
set(gca,'FontSize',14,'FontAngle','italic','XTick',-3:3);%×ÖÌåÉèÖöԺóÃæµÄla belÆð×÷ÓÃ
xlabel('x');
ylabel('y');
zlabel('z')
alpha(0.5)
1. 创建一个名为showfig 的函数文件,该函数文件根据输入宗量不同情况显示出
不同的图形。
其中绘图部分由函数文件中定义的子函数figplot 完成。
具体要求为:没有输入量时,画出单位圆;输入量为大于2的自然数N 时,绘制正N 边形,图名反映多边形的边数;输入量是“非自然数”时,提示“输入输错,请出入一个自然数”。
在命令窗口运行showfig 函数,其中参量自行设定,给出运行结果。
-2
-1
1
2
x y
z
2. showfig;
figure;showfig(3);
figure;showfig(6);
figure;showfig(3.5);
function showfig(N)
switch nargin
case 0
flag=0;
figplot(flag);
case 1
if (N>2)&(floor(N)==N)
flag=1;figplot(flag,N);
else
error('输入出错');
end
otherwise
end
function figplot(flag,N)
if flag==0
N=100;
end ;
theta=pi/2:2*pi/N:5/2*pi;
x=cos(theta);
y=sin(theta);
plot(x,y,'k','LineWidth',3);
axis off ;axis equal ;
3. 用指令fminbnd 求)sin(cos )(x e x y x --=在0=x 附近的最小值。
要求分别写出
fminbnd 的第一个输入量使用字符串及匿名函数的的相关程序,观察两种方式所得结果是否一致。
4. x=-3:0.01:3;
5. y=-exp(-x).*abs(sin(cos(x)));
6. plot(x,y);
7. [xn0,fval,exitflag,output]=fminbnd('-exp(-x)*abs(sin(cos(x)))',-1.5,-0.5) 8. y1=@(x)(-exp(-x)*abs(sin(cos(x))))
9. [xn0,fval]=fminbnd(y1,-1.5,-0.5)
10. %y1=inline('-exp(-x)*abs(sin(cos(x)))')
11. %[xn0,fval]=fminbnd(y1,-1.5,-0.5)
12.
3. 在matlab 的\toolbox\matlab\elmat\private 文件夹下有一个“烟圈矩阵”发生函数smoke.m 。
运行指令smoke(3,0),将生成一个三阶伪特征根矩阵:
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡--+-=0000.100000.10000.18660.05000.0000000.18660.05000.0i i A 当前目录为E:\班级,它与“烟圈矩阵”所在路径不同,请问如何利用函数句柄调用smoke.m 函数,产生3阶伪特征根矩阵。
写出相应的程序及操作步骤。
输入指令如下:smoke(3,0,'double')
SM=@smoke;
A=SM(3,0,'double')
步骤:(1)设置当前目录为:\toolbox\matlab\elmat\private
(2)输入smoke(3,0,'double')获得结果,再输入SM=@smoke; 创建smoke.
的函数句柄
(3)回到当前目录; E:\班级.输入A=SM(3,0,'double')即可。