在MATLAB帮助文件中查找有关title的使用方法.docx
《在MATLAB帮助文件中查找有关title的使用方法.docx》由会员分享,可在线阅读,更多相关《在MATLAB帮助文件中查找有关title的使用方法.docx(16页珍藏版)》请在冰豆网上搜索。
在MATLAB帮助文件中查找有关title的使用方法
在MATLAB帮助文件中查找有关title的使用方法,并为y1对应的图形添加标题y1=sin(t);为y2对应图形添加标题y2=e-atcos(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=0:
0.1:
10;
y=1-exp(-0.5*t).*cos(2*t);
plot(t,y)
xlabel('t');
ylabel('y(t)');
4.用间距为0.1的水平线和垂直线均匀分割
的矩形域,在所有水平线和垂直线交点上计算函数
,并图示。
要求采用向量化编程。
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);
shadinginterp;
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(:
[24])=[]
[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);warningoff;
Z=sin(X).*sin(Y)./X./Y;
1)记录[X,Y],理解meshgrid函数的意义。
2)继续编写指令求出矩阵Z中有多少个“非数”数据。
3)用指令surf(X,Y,Z);shadinginterp观察所绘图形。
4)写出绘制相应“无裂缝”图形的全部指令,并保存为.m文件。
x=-3*pi:
pi/15:
3*pi;
%x=x+(x==0)*eps;
y=x;
[X,Y]=meshgrid(x,y);warningoff;
Z=sin(X).*sin(Y)./X./Y;
sum(sum(isnan(Z)))
surf(X,Y,Z);shadinginterp
xlabel('x')
ylabel('y')
zlabel('z')
1.给定一个函数
,利用diff及gradient函数近似求
的导函数
,并将函数
和其导函数曲线绘制在一个图中,同时给出两种方法得到的导函数曲线的细节图,并进行对比。
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函数求
,其中
与第1题中相同。
记录结果,要求quad的计算结果达到绝对精度为10-9。
观察各函数计算结果之间的差异。
clear;formatlong;
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求
,其中
与第1题中相同。
将两者计算结果及它们的误差绘制在同一个图中,同时给出误差的细节图。
在以上题目中要求在图中为曲线添加相应的图例,原函数曲线用细线,其他曲线用粗线。
clear;formatlong;
t=0:
0.1:
5;
y=exp(-t.^2);
s1=cumsum(y)*0.1;
s2=cumtrapz(t,y);
subplot(1,2,1);holdon;
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.设
,
,
,求解
。
绘制
的曲线,绘出
与
之间关系的相平面图。
给出
的具体数值。
t范围限制在[02.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');
functionydot=DyDt(t,y)
ydot=[y
(2);-2*y
(1)+3*y
(2)+1];
end
2.求以下方程组的解1)
2)
clear;
A=[1-11/21/2;111-1;11-1/41;-81-11];
b=[01001]';
rank(A)
rank([A,b])
B=A\b;
clear;
A=[-111-1;11-11;1-1/4-11;-8-111];
b=[130.5-3.5]';
rank(A)
rank([A,b])
B=A\b;
C=null(A);
A*(rand
(1)*C+B)
b
1.求函数
在区间[-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.求
的实数解。
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.使用字符串、内联对象、匿名函数或函数文件的句柄四种方式求二元函数方程组
的数值解clearall
x0=[0.50.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)
functionf=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.有理分式
,其中
,
,求该分式的商多项式
和余多项式
。
N=conv([3010],[1000.5]);D=conv([12-1],[5201]);
[Qr]=deconv(N,D)
1.已知函数
,其中
。
试在同一张图上绘出
不同取值时的各条曲线,时间区间为
。
要求
的各条曲线用蓝色,
的用红色,
的用黑色,且线较粗。
及
的两条曲线添加text标志。
如图所示。
clear;
t=0:
0.01:
18;
figure
(1);holdon;
forz=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');
elseifz>1
y=1/2/b*(exp(-(z-b)*t)-exp(-(z+b)*t));
plot(t,y,'-r');
elseifz==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')
gridon;
boxon;
axis([018-0.40.8])
xlabel('x')
ylabel('y')
2.使用极坐标绘图指令polar绘制表达式
对应的心形图,如图所示。
the=0:
pi/100:
2*pi;
P=1-cos(the);
h=polar(the,P);%·µ»ØÏߵľä±ú
set(h,'LineWidth',3)
title('P=1-cos(\theta)')
3.使用双纵坐标在同一张图上绘出函数
及其积分
,要求标注横、纵坐标,两条曲线均使用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)
gridon;
1.绘制
,
,
的三维曲线如图所示。
要求曲线为绿色实线,坐标轴字体为斜体,字体大小适当。
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')
boxon;
xlabel('\fontsize{24}x')
ylabel('\fontsize{24}y')
zlabel('\fontsize{24}z')
2.在区域
,绘制
的三维(透视)网格曲面,如图所示。
要求,透明度设置为0.5,坐标轴范围与图示一致。
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);
boxon;
%xlim([-33]);
%ylim([-33])
axis([-33-33-22]);
set(gca,'FontSize',14,'FontAngle','italic','XTick',-3:
3);%×ÖÌåÉèÖöԺóÃæµÄlabelÆð×÷ÓÃ
xlabel('x');
ylabel('y');
zlabel('z')
alpha(0.5)
1.创建一个名为showfig的函数文件,该函数文件根据输入宗量不同情况显示出不同的图形。
其中绘图部分由函数文件中定义的子函数figplot完成。
具体要求为:
没有输入量时,画出单位圆;输入量为大于2的自然数N时,绘制正N边形,图名反映多边形的边数;输入量是“非自然数”时,提示“输入输错,请出入一个自然数”。
在命令窗口运行showfig函数,其中参量自行设定,给出运行结果。
2.showfig;
figure;showfig(3);
figure;showfig(6);
figure;showfig(3.5);
functionshowfig(N)
switchnargin
case0
flag=0;
figplot(flag);
case1
if(N>2)&(floor(N)==N)
flag=1;figplot(flag,N);
else
error('输入出错');
end
otherwise
end
functionfigplot(flag,N)
ifflag==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);
axisoff;axisequal;
3.用指令fminbnd求
在
附近的最小值。
要求分别写出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),将生成一个三阶伪特征根矩阵:
当前目录为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')即可