西南交大MATLAB编程作业相关复习资料(2)

2019-08-31 14:34

for i=1:ii y(i)=d(i); end for j=1:ii

for r=1:ii-1 if y(r)>y(r+1) t=y(r); y(r)=y(r+1); y(r+1)=t; end end end

fprintf('%d ',y)

23. 将数组a[n]中的每一个元素依次循环向后移动

一位。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t23中

%然后在命令窗口直接输入 t23 function t23 x=0;

x=input('输入一个数组a[],输入格式为[a1 a2 a3 ??]\\n','s'); x=str2num(x); if x~=0 t(x) else

fprintf('Not input!'); end

function f=t(x) a=[];k=0;

b=numel(x); for i=1:b-1 a(i+1)=x(i); end a(1)=x(b); for j=1:b end disp(a)

24. 将一个正整数n输出成“千分位”形式,即从个

位数起,每三位之间加一个逗号,例如,将7654321输出成7,654,321.

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t24中

%然后在命令窗口直接输入 t24 function t24

x=input('输入一个整数\\n','s'); a=numel(x); x=str2num(x); b=ceil(a/3); for i=1:b

a(i)=mod(x,1000); x=fix(x/1000); end for j=b:-1:2

fprintf('%d,',a(j)); end

fprintf('%d',a(1)); fprintf('\\n');

25. 求出矩阵a中每行元素的平均值和平均最

6

大的行号。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t25中

%然后在命令窗口定义矩阵a为需要输入的矩阵,再输入 t25(a) function t25(a)

m=[];n=[];max=0;k=0;p=[]; c=numel(a); m=a(1,:); b=numel(m); d=c/b; for i=1:d

n(i)=sum(a(i,:)); end for i=1:d p(i)=n(i)/b; if n(i)>max max=n(i); k=i; end end

fprintf('每行元素的平均值为:\\n'); for i=1:d

fprintf('%d ',p(i)); end

fprintf('\\n');

fprintf('平均值最大的行号为: %d\\n',k);

26. 编写一个函数,找出矩阵A中最大元素和最小元

素所在的行列号.

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t26中

%然后在命令窗口将需要处理的矩阵存入 a 中 %最后输入 t26(a) function t26(a) e=1;f=1; g=1;k=1; c=numel(a); m=a(1,:); b=numel(m); d=c/b; min1=a(1,1); max1=a(1,1); for i=1:d for j=1:b

if max1<=a(i,j) max1=a(i,j); e=i; f=j; end

if min1>=a(i,j) min1=a(i,j); g=i; k=j; end end end

fprintf('最大元素所在的行列号为%d %d\\n',e,f); fprintf('最小元素所在的行列号为%d %d\\n',g,k);

27. 给出年、月、日,计算该日是该年的第几天?

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t27中

%然后在命令窗口将需要处理的年月日按 年 月 日 顺序存入数组x 中 %最后输入 t27(x) function t27(x) a=0; if

mod(x(1),4)==0&mod(x(1),100)~=0|mod(x(1),400)==0 a=1; end

tian=30*(x(2)-1)+x(3); for i=1:x(2)-1

if i==3|i==5|i==7|i==8|i==10 tian=tian+1; end end

if x(2)~=1|x(2)~=2 if a==0 tian=tian-1; end end tian

28. 输入数组a,b的元素,用数组a和b构造数组c,使得:

c(i)=a(i)-b(i) 当a(i)>b(i)时; c(i)= a(i)+b(i) 当a(i)<=b(i)时;

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t28中

%然后在命令窗口直接输入 t28

7

function t28()

a=input('请输入数组a输入格式为[x1 x2 ??]\\n'); b=input('请输入数组b,b与a的规格相同\\n'); d=numel(a);c=[]; for i=1:d if a(i)>b(i) c(i)=a(i)-b(i); elseif a(i)<=b(i) c(i)=a(i)+b(i); end end c

*30.编写程序求所有各位数字的立方和等于420的三位

数.

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t30中

%然后在命令窗口直接输入 t30 function t30 s=0; for k=100:999 i=k;a=zeros(1,3); for j=1:3

a(j)=mod(i,10); i=fix(i/10); end

if a(1)^3+a(2)^3+a(3)^3==420 disp(k) s=1; end

end if s==0

fprintf('不存在这样的三位数\\n'); end

*31.学校要举行篮球循环赛,共有十个队参加比赛,

请你安排一下比赛场次,使每队每次打完比赛后至少能隔一场不比赛,以便得到休息从而保持体力,请用matlab解决这个问题,并给出至少一个比赛日程表(每队休息的场次越多越好,但每队得到的休息应大体相同,不能出现某队刚打完比赛,马上和另一个已经休息了诺干场的球队比赛,这是不公平的)。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t31中

%然后在命令窗口直接输入 t31 function t31 a=[1:5]; b=[10:-1:6]; for k=1:9

fprintf('第%d轮\\n',k); for i=1:5

fprintf('-------\\n',a(i),b(i)); end

for j=5:-1:1 a(j+1)=a(j); end a(2)=b(1); b(1)=[]; b(5)=a(6); a(6)=[]; end

知识点总结

了解matlab中常见变量:ans pi Nan eps等的基本含义

Pi圆周率 eps浮点运算的相对精度10^-25 Nan不定值 ans求极值

了解matlab中变量定义的规则。

a???42?b?71??59?1、将矩阵?75???,??83??c?和

??62??组合两个新矩阵:

求a和b的和,b和c的矩阵乘,a和c的数组乘。 组合成一个4?3的矩阵,第一列为按列顺序排列的a矩阵元素,第二列为按列顺序排列的b矩阵元素,第三

??475?列为按列顺序排列的c矩阵元素,即?786???219?? ?532??按照a、b、c的列顺序组合成一个行矢量,即

?472578135692?

a=[4 2;7 5];b=[7 1;8 3];c=[5 9;6 2];...

a+b

ans=11 3

15 8 >>b*c ans=41 65

8

58 78 >>a.*c ans=20 18

42 10

d=[a(:),b(:),c(:)]

d=4 7 5 7 8 6 2 1 9 5 3 2

d(:)' %转置符号“ ‘ ” ans =

4 7 2 5 7 5 6 9 2 法2

e1=cat(1,a(:),b(:),c(:)) >> e2=e1'

A=[4 9 2;7 6 4;3 5 7];

B=[1 2 3;4 5 6;7 8 9]; X=A\\B

X=0.1043 0.1374 0.1706 -0.1754 -0.0948 -0.0142 1.0806 1.1517 1.2227

>>det(X) %计算矩阵行列式的值

ans=-3.1825e-017 >>eig(X) %计算特征值

ans=1.3385

0.0000 -0.1062

8 1 3

x=[0:0.02*pi:4*pi];%必须有时间域申明 y1=sin(x);y2=cos(x);... plot(x,y1.*y2)

>>x1=input('x1='); y1=input('y1='); z1=input('z1='); x2=input('x2=');...

y2=input('y2='); z2=input('z2=');

d=sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2) x1=2 y1=3 z1=1 x2=8 y2=-5 z2=-1 d=10.1980 >>

t=[0:0.5:10];y1=exp(-0.1*t);y2=exp(-0.2*t);y3=exp(-0.5*t);...

plot(t,y1,'-.b',t,y2,'-k',t,y3,':r') >> grid on,title('指数曲线') >> grid on,xlabel('t'),ylabel('y')

>> gtext('蓝色a=0.1 黑色a=0.2 红色a=0.5') %以鼠标取点方式标注 3、求出任意矩阵a中每行元素的平均值和平均最大的行号。

m=[];n=[];max=0;k=0;p=[]; a=input('请输入一个矩阵'); [d,b]=size(a); for ii=1:d

n(ii)=sum(a(ii,:)); end

for ii=1:d p(ii)=n(ii)/b; if n(ii)>max max=n(ii); k=ii; end end

fprintf('每行元素的平均值为:\\n'); for i=1:d

fprintf('%4.3f ',p(ii)); end

fprintf('\\n');

fprintf('平均值最大的行号为: %d\\n',k);

编写一个函数,找出任意矩阵A中最大元素和最小元素所在的行列号.

e=1;f=1; g=1;k=1;

a=input('请输入一个矩阵'); [d,b]=size(a); min1=a(1,1); max1=a(1,1); for ii=1:d for jj=1:b

if max1<=a(ii,jj) max1=a(ii,jj); e=ii; f=jj; end

if min1>=a(ii,jj) min1=a(ii,jj); g=ii;

9

k=jj; end end end

fprintf('最大元素所在的行列号为%d %d\\n',e,f);

fprintf('最小元素所在的行列号为%d %d\\n',g,k); 飞船的运转半径。一个做匀速圆周运动的物体,其向

v2心加速度公式为a?r . a代表向心加速度,单位为

m/s*s。v 代表物体运动的速率,单位为 m/s,,r 代表半径,单位为m. 假设这个物体是一个飞机,回答下列问题 :

1、假设飞机的运动速度为0.85 马赫, 即声速的85%. 如果向心加速度2g, 那么飞机的半径为多少? 2、假设飞行员能忍耐的最大加速度为7g. 那么以 1. 5 马赫飞行的最小半径为多少?

3、画出以向心加速度为自变量的半径函数, 向心加速度的取值为[2g,6g], 假设运转速度为 0.85 马赫 .

程序:

1.

% Define variables:

% g -- Max acceleration (g) % grav -- Acceleration of gravity (9.81 m/s2)

% mach1 -- Speed of sound (340 m/s) % radius -- Turning radius (m)

% speed -- Aircraft speed in Mach % Initialise values

grav = 9.81; mach1 = 340;

% Get speed and max g

speed = input('Enter speed (Mach): '); g = input('Enter max acceleration (g): '); % Calculate radius

radius = (speed * mach1).^ 2 / ( g * grav ); % Tell user

fprintf('Turning radius = %f m\\n',radius); 2.

% max_speed -- Maximum speed in Mach numbers

% min_speed -- Minimum speed in Mach numbers

% radius -- Turning radius (m) % speed -- Aircraft speed in Mach

% Initialise values grav = 9.81; mach1 = 340;

% Get speed and max g

min_speed = input('Enter min speed (Mach): ');

max_speed = input('Enter min speed (Mach): ');

g = input('Enter max acceleration (g): '); % Calculate range of speeds speed =

min_speed:(max_speed-min_speed)/20:max_s

peed;

% Calculate radius

radius = (speed * mach1).^ 2 / ( g * grav ); % Plot the turning radius versus speed plot(speed,radius/1000);

title('Plot of turning radius versus speed');

xlabel('Speed (Mach)');

ylabel('Turning radius (km)'); grid on; 3.

% max_g -- Maximum accleration in g's

% min_g -- Minimum accleration in g's

% radius -- Turning radius (m) % speed -- Aircraft speed in Mach % Initialise values grav = 9.81; mach1 = 340;

% Get speed and max g

speed = input('Enter speed (Mach): '); min_g = input('Enter min acceleration (g): ');

max_g = input('Enter min acceleration (g): ');

% Calculate range of accelerations g = min_g:(max_g-min_g)/20:max_g; % Calculate radius

radius = (speed * mach1).^ 2 ./ ( g * grav ); % Plot the turning radius versus speed

plot(g,radius/1000);

10

title('Plot of turning radius versus

acceleration');

xlabel('Centripetal acceleration (g)'); ylabel('Turning radius (km)'); grid on;

Decibels. Engineers often measure the ratio of two power measurements in decibels, or dB. The equation for the ratio of two power measurements in decibels is dB?10logP210P 1Where P2 is the power level being measured, and P1 is

some reference power level.

A. Assume that the reference power level P1 is 1 milliwatt, and write a program that accepts an input power P2 and converts it into dB with respect to 1 mW reference level.(Engineers have a special unit for dB power levels with respect to a 1 mW reference: dBm). Use good programming practices in your program. B. Write a program that creates a plot of power in watts versus power in dBm with respect to a 1 mW reference level. Create both a linear xy plot and a log-linear xy plot.

程序1:

% Script file: decibel.m %

% Define variables:

% dBm -- Power in dBm % pin -- Power in watts


西南交大MATLAB编程作业相关复习资料(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:热缩式电缆头制作作业指导书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: