MATLAB课后习题.docx

上传人:b****6 文档编号:12400204 上传时间:2023-06-05 格式:DOCX 页数:28 大小:79.86KB
下载 相关 举报
MATLAB课后习题.docx_第1页
第1页 / 共28页
MATLAB课后习题.docx_第2页
第2页 / 共28页
MATLAB课后习题.docx_第3页
第3页 / 共28页
MATLAB课后习题.docx_第4页
第4页 / 共28页
MATLAB课后习题.docx_第5页
第5页 / 共28页
MATLAB课后习题.docx_第6页
第6页 / 共28页
MATLAB课后习题.docx_第7页
第7页 / 共28页
MATLAB课后习题.docx_第8页
第8页 / 共28页
MATLAB课后习题.docx_第9页
第9页 / 共28页
MATLAB课后习题.docx_第10页
第10页 / 共28页
MATLAB课后习题.docx_第11页
第11页 / 共28页
MATLAB课后习题.docx_第12页
第12页 / 共28页
MATLAB课后习题.docx_第13页
第13页 / 共28页
MATLAB课后习题.docx_第14页
第14页 / 共28页
MATLAB课后习题.docx_第15页
第15页 / 共28页
MATLAB课后习题.docx_第16页
第16页 / 共28页
MATLAB课后习题.docx_第17页
第17页 / 共28页
MATLAB课后习题.docx_第18页
第18页 / 共28页
MATLAB课后习题.docx_第19页
第19页 / 共28页
MATLAB课后习题.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MATLAB课后习题.docx

《MATLAB课后习题.docx》由会员分享,可在线阅读,更多相关《MATLAB课后习题.docx(28页珍藏版)》请在冰点文库上搜索。

MATLAB课后习题.docx

MATLAB课后习题

MATLAB课后习题

5、利用rand函数产生(0,1)间的均匀分布的10*10随机矩阵A,然后统计A中大于等于0.6的元素的个数。

解:

A=rand(10);

B=A>=0.6;

C=sum(B);

count=sum(C)

运行结果(每次运行结果是不同的,仅作参考):

count=32

6、利用randn函数产生均值为0,方差为1的10*10随机矩阵A,然后统计A中大于-0.5且小于0.5的元素的个数。

解:

A=randn(10);

B=(A<0.5)&(A>-0.5);

C=sum(sum(B))

运行结果(每次运行结果是不同的,仅作参考):

C=48

1、解:

ifand(a<1,b<=0.5)

语句1;

elseifand(a<1,b>0.5)

语句2;

elseifand(a>=1,b<=0.5)

语句3;

else

语句4;

2、有一矩阵A,找出矩阵中值等于1的元素,并将它们重新排列成列向量B。

解:

A=2*rand(4);

k=find(A<=1);

A(k)=[];%删除下标为k的元素

B=A'

运行结果(每次运行结果是不同的,仅作参考)

B=

1.4769

1.8348

1.5310

1.1524

1.3667

1.0932

1.2889

1.2952

1.3580

3、在一测量矩阵A(100*3)中,存在有奇异值(假设大于100的置认为是奇异值),编程实

现删去奇异值所在的行。

解:

A=120*randn(10,3);

[i,j]=find(A>100);

A(i,:

)=[]%删去存在奇异值的行

4、在给定的100*100矩阵中,删去整行为0的行,删去整列为0的列。

解:

A=diag([1234],1)

B=any(A)

[i,j]=find(B==0)

A(:

i)=[]%删除全为0的列

B=any(A')

[i,j]=find(B==0)

A(j,:

)=[]%删除全为0的行

运行结果:

初始值:

A=

01000

00200

00030

00004

00000

操作后:

A=

1000

0200

0030

0004

1、将窗口分割成四格,分别绘制正弦、余弦、正切和余切函数曲线,并加上适当的标注。

程序为:

x=0:

pi/50:

2*pi;

k=[1265176101];

x(k)=[];%删除正切和余切的奇异点

figure

(1)

subplot(2,2,1)

plot(x,sin(x),'k--'),gridon

legend('\ity=sin(x)')

title('y=sin(x)')

xlabel('x'),ylabel('y')

subplot(2,2,2)

plot(x,cos(x),'r--'),gridon

legend('\ity=cos(x)')

title('y=con(x)')

title('简单柱体')

绘制球的程序为:

figure

(1)

subplot(2,1,1)

sphere

axisequal

title('半径为1的球')

subplot(2,1,2)

[x,y,z]=sphere;

x=2*x;

y=2*y;

z=2*z;

surf(x,y,z),axissquare

title('半径为2的球')

运行后的图形:

5、绘制三维条形图:

程序为:

Y=cool(7);

figure

(1)

subplot(2,2,1),bar3(Y,'detached'),title('Detached')

subplot(2,2,2),bar3(Y,0.25,'detached'),title('Width=0.25')

subplot(2,2,3),bar3(Y,'grouped'),title('Grouped')

subplot(2,2,4),bar3(Y,'stacked'),title('Stacked')

运行后的图形为:

6、绘制二维条形图

程序为:

Y=round(rand(5,3)*10);

figure

(1)

subplot(2,2,1),bar(Y,'group'),title('Group')

subplot(2,2,2),bar(Y,'stack'),title('Stack')

subplot(2,2,3),barh(Y,'stack'),title('Stack')

subplot(2,2,4),bar(Y,1.5),title('Width=1.5')

运行后的图形:

1、编写M函数实现:

求一个数是否为素数,在编写一主程序,要求通过键盘输入一个整数,然后完成判断其是否为素数。

解:

functionprime(x)

n=fix(sqrt(x));

fori=2:

n

ifrem(x,i)==0

a='fasle'

return

elsea='true'

end

end

运行结果:

>>x=56;

>>prime(x)

a=

fasle

2、编写程序完成从表示字符的响亮中删去空格,并求出字符个数。

解:

function[nstr,n]=del(str)

nstr=[];

k=find(str~='');

nstr=str(k);

n=length(nstr);

end

运行后为:

str='drhyfghgtesdhgfds';

>>[nstr,n]=del(str)

nstr=

drhyfghgtesdhgfds

n=

17

3、编写M函数统计十进制数值中’0‘的个数,然后编写脚本文件,实现统计所有自然数1~2006中0的个数。

解:

M函数为:

functiony=geshu(x)

s=num2str(x);

n=length(s);

m=0;

ifs

(1)=='0'

disp('xiserror');

return

end

fori=2:

n

ifs(i)=='0'

m=m+1;

end

end

y=m;

脚本文件为'jiu4':

sum=0;

forx=1:

2006

y=geshu(x);

sum=sum+y;

end

disp(sum)

运行结果为:

>>jiu4

504

4、利用menu函数输入选择参数ch。

当ch=1时,产生[-10,10]之间均匀分布的随机数;当ch=2时,产生[-5,5]之间均匀分布的随机数;当ch=3时,产生[-1,1]之间均匀分布的随机数;当ch=4时,产生均值为0,方差为1的正态分布随机数。

要求使用switch函数。

解:

s=menu('ch','1','2','3','4');

n=[];

switchs

case1,n=20*rand(3)-10

case2,n=10*rand(3)-5

case3,n=2*rand(3)-1

case4,n=randn(3)

otherwisedisp('error')

end

运行后:

按下2后:

n=

4.22740.43663.3897

3.00374.8478-0.6674

-2.14052.1568-0.2938

5、求阵列x的平均值和标准差

解:

function[mean1,stdev]=stat2(x)

[m,n]=size(x);

ifm==1

m=n;

end

s1=sum(x);s2=sum(x.^2);

mean1=s1/m;

stdev=sqrt(s2/m-mean1.^2);

运行后:

>>x=rand(4,4)+2;

>>[mean1,stdev]=stat2(x)

mean1=

2.52072.39222.64982.2539

stdev=

0.17130.18920.17250.2027

6、测试程序执行时间

%tech1.m

tic

i=0;

fort=0:

.01:

100

i=i+1;

y(i)=sin(t);

end

toc

%tech2.m

tic

t=0:

.01:

100;

y=sin(t);

Toc

运行后:

Elapsedtimeis0.015217seconds.

Elapsedtimeis0.000508seconds.

1、产生menu选择输出颜色

解:

s=menu('colorselection','red','green','blue','yellow','black')

switchs

case1,scolor='red';

case2,scolor='green';

case3,scolor='blue';

case4,scolor='yellow';

case5,scolor='black';

otherwisedisp('error')

end

Scolor

2、企业发放的奖金按个人完成的利润(I)提成。

分段提成比例wei即如王某完成25万元利润时,个人可得

y=10x10%+10x5%+5x2%(万元)

据此编写程序,求企业职工的奖金。

functionbonus=bon(I)

n=fix(I/100000)

if(n>4)

n=4;

end

bon1=100000*0.1;

bon2=0.05*(200000-100000);

bon3=0.02*(400000-200000);

switchn

case0,bonus=I*100000;

case1

bonus=bon1+0.05*(I-100000);

case{2,3}

bonus=bon1+bon2+0.02*(I-200000);

case4,bonus=bon1+bon2+bon3+0.01*(I-400000);

end

运行后:

>>I=1700000;

>>bonus=bon(I)

n=

17

bonus=

32000

3、有一分数序列2/1,3/2,5/3/,8/5……求前15项和。

解:

s=1;t=2;sum=0;

x=t/s;

sum=sum+x;

fori=1:

15

z=t;t=s+t;s=z;

x=t/s;

sum=sum+x;

end

sum

运行后:

>>qiuhe

sum=

26.1881

4、约瑟夫环

解:

n=input('pleaseinputn:

');

m=input('pleaseinputm:

');

b=1:

n;

i=1;c=0;s=0;

whiles

ifb(i)~=0

c=c+1;

ifc==m

s=s+1;a(s)=b(i);b(i)=0;

c=0;

end

end

ifi==n

i=0;

end

i=i+1;

end

a

运行后:

>>yuese

pleaseinputn:

12

pleaseinputm:

3

a=

Columns1through8

369124817

Columns9through16

211510316520

Columns17through23

11921019151

5、编写程序计算x在(-3,3)上,并画出曲线。

解:

functiony=func2(x)

n=length(x);

fori=1:

n;

if(x(i)>=-3)&&(x(i)<-1)

y(i)=[-x(i).^2-4*x(i)-3]/2;

elseif(x(i)>=-1)&&(x(i)<1)

y(i)=-x(i).^2+1;

else(x(i)>=1)&&(x(i)<3)

y(i)=[-x(i).^2+4*x(i)-3]/2;

end

end

脚本为:

x=-3:

.01:

3;

y=func2(x);

figure

(1)

plot(x,y),gridon

title('y=func2(x)')

xlabel('x'),ylabel('y')

运行后:

1、求矩阵与的逆矩阵和行列式。

解:

a=[535;374;798];

b=[242;679;836];

c1=inv(a)

c2=det(a)

d1=inv(b)

d2=det(b)

运行后:

c1=

10.000010.5000-11.5000

2.00002.5000-2.5000

-11.0000-12.000013.0000

c2=

2.0000

d1=

0.1531-0.18370.2245

0.3673-0.0408-0.0612

-0.38780.2653-0.1020

d2=

98.0000

2、解方程组

解:

A=[321;1-13;24-4];

b=[76-2];

A\b'

运行后:

ans=

1.0000

1.0000

2.0000

2、对一组数据进行分别采用y1(t)=c1+c2exp(-t),y2(t)=d1+d2t.*exp(-t)拟合.

解:

t=[12345678910]';

y=[4.8424.3623.7543.3683.1693.0833.0343.0163.0123.005]';

a=[ones(size(t))exp(-t)];

C=a\y;

b=[ones(size(t))t.*exp(-t)];

D=b\y;

T=[10:

-1:

1]';

y1=[ones(size(T))exp(-T)]*C;

y2=[ones(size(T))T.*exp(-T)]*D;

plot(T,y1,'r--',T,y2,'k-',t,y,'o');

legend('\ity1(t)=c1+c2exp(-t)','\ity2(t)=d1+d2t.*exp(-t)')

title('曲线拟合')

xlabel('\itt'),ylabel('\ity')

运行后:

4、矩阵,分别对a进行特征值分解、奇异值分解、LU分解、QR分解。

解:

>>[v,d]=eig(a,b)

v=

-0.4330-0.2543-0.1744

-0.56570.9660-0.6091

-0.70180.04720.7736

d=

13.548200

04.83030

003.6216

>>a=[912;563;827];

>>[u,s,v]=svd(a)

u=

-0.56010.5320-0.6350

-0.4762-0.8340-0.2788

-0.67790.14620.7204

s=

15.523400

04.56480

003.3446

v=

-0.82750.3917-0.4023

-0.3075-0.9156-0.2592

-0.4699-0.09070.8781

>>[l,u]=lu(a)

l=

1.000000

0.55561.00000

0.88890.20411.0000

u=

9.00001.00002.0000

05.44441.8889

004.8367

>>[q,r]=qr(a)

q=

-0.69030.3969-0.6050

-0.3835-0.9097-0.1592

-0.61360.12210.7801

r=

-13.0384-4.2183-6.8260

0-4.8172-1.0807

003.7733

5、求解微分方程。

解:

functiondy=funf(t,y)

dy=[5*y

(1)-5*y

(2)-6*y(3);3*y

(1)-2*y

(2)+5*y(3);2*y

(1)-y

(2)-4*y(3)];

脚本文件:

x0=[1,-4,5]';

tspan=[30,100];

[t,x]=ode45('funf',tspan,x0);

plot3(x(:

1),x(:

2),x(:

3)),gridon

title('微分方程曲线')

运行后:

微分方程组x’=10(-x+y);y’=28x-y-xz;z’=xy-8z/3,x0=[12,2,9],求微分方程在[0,30]上的解,并画出系统轨迹。

解:

脚本文件:

二维图:

三维图:

2、分别用多项式和指数函数进行拟合。

y1(t)=c1+c2t+c3t2,y2(t)=d1+d2exp(t)

解:

t=[00.20.40.60.81.02.05.0]';

y=[1.01.511.882.132.292.402.60-4.00]';

B1=[ones(size(t))tt.*t];

B2=[ones(size(t))exp(t)];

A=B1\y;

C=B2\y;

T=[0:

.1:

6]';

Y1=[ones(size(T))TT.*T]*A;

Y2=[ones(size(T))exp(T)]*C;

plot(T,Y1,'-',T,Y2,'--',t,y,'o')

legend('\itY1','\itY2')

3、将(x-6)(x-3)(x-8)展开为系数多项式的形式。

解:

>>a=[638];

>>pa=poly(a);

>>ppa=poly2sym(pa)

ppa=

x^3-17*x^2+90*x-144

4、求解多项式x3-7x2+2x+40的根。

解:

>>r=[1-7240];

>>p=roots(r);

-0.2151

0.4459

0.7949

0.2707

5、求解在x=8时多项式(x-1)(x-2)(x-3)(x-4)的值。

解:

>>p=poly([1234]);

>>polyvalm(p,8)

ans=

840

6、计算多项式乘法(x2+2x+2)(x2+5x+4)。

解:

>>c=conv([122],[154])

c=

1716188

7、计算多项式除法(3x3+13x2+6x+8)/(x+4)。

解:

>>d=deconv([31368],[14])

d=

312

9、微分方程组当t=0,=1;=-0.5,求微分方程组t~【0,25】上的解,并画出x1-x2的系统轨迹。

解:

functiondy=fund(t,y)

dy=[0.5-y

(1);y

(1)-4*y

(2)];

脚本文件:

x0=[1,-0.5];

tspan=[0,20];

[T,Y]=ode23('fund',tspan,x0);

figure

(1)

plot(T,Y(:

1),'r--',T,Y(:

2))

legend('\itx1','\itx2')

1.利用下标建立多维阵列。

产生一个3×3×2的多维矩阵A

>>A=[572;012;342];%产生一个3*3矩阵

>>A(:

:

2)=[273;428;203]

A(:

:

1)=

572

012

342

A(:

:

2)=

273

428

 203

2.利用MATLAB函数产生多维阵列。

利用MATLAB的函数(如rand、randn、ones、zeros等)都可直接产生多维阵列,在函数调用时可指定每一维的尺寸。

例如,为产生100×3×2维的正态分布随机数R,可输入

  >>R=randn(100,3,2);

  >>A=5*ones(3,4,2);%产生元素相同的多维阵列

>>B=repmat(5,[342]);%产生元素相同的多维阵列

3.利用cat函数建立多维阵列

 >>A=[28;05];B=[18;24];

>>C=cat(3,A,B);

>>D=cat(4,A,B);

>>size(C)

ans=222

>>size(D)

ans=

2212

这说明得到的C为2×2×2维,而D为2×2×1×2维。

1、冒泡法排序

functiony=bubblesort(x)%冒泡法排序.

n=length(x);

fori=1:

n-1

forj=i+1:

n

ifx(i)>x(j)

temp=x(i);

x(i)=x(j);

x(j)=temp;

end

end

end

y=x;

运行结果:

>>x=[1234654257623];

>>y=bubblesort(x)

y=

2512233476654

以上为按照升序排列的,若要降序,则

ifx(i)

temp=x(i);

x(i)=x(j);

x(j)=temp;

即可

运行结果:

>>x=[1221245194530];

>>y=bubblesort(x)

y=

4530211912542

2、傅里叶变换

应用付立叶变换并求频谱图

clc;clf;clearall;

fs=1000;

t=0:

1/fs:

0.6;

f1=200;

f2=300;

x=sin(2*pi*f1*t)+sin(2*pi*f2*t);

subplot(4,1,1);

plot(n,x);

title('f1(100Hz)\f2(300Hz)的正弦信号,初相0');

xlabel('序列(n)');

gridon;

number=512;

y=fft(x,number);

n=0:

length(y)-1;

f=fs*n/length(y);

subplot(4,1,2);

plot(f,abs(y)/max(abs(y)));

holdon;

plot(f,abs(fftshift(y))/max(abs(y)),'r');

title('f1\f2的正弦信号的FFT(512点)');

xlabel('频率Hz');

gridon;

x=x+randn(1,length(x));

subplot(4,1,3);

plot(n,x);

t

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2