实验三MATLAB程序设计

合集下载

Matlab实验报告(三)-MATLAB绘图

Matlab实验报告(三)-MATLAB绘图

实验目的1.掌握MATLAB的基本绘图命令。

2.掌握运用MATLAB绘制一维、二维、三维图形的方法.3.给图形加以修饰。

一、预备知识1.基本绘图命令plotplot绘图命令一共有三种形式:⑴plot(y)是plot命令中最为简单的形式,当y为向量时,以y的元素为纵坐标,元素相应的序列号为横坐标,绘制出连线;若y为实矩阵,则按照列绘出每列元素和其序列号的对应关系,曲线数等于矩阵的列数;当y为复矩阵时,则按列以每列元素的实部为横坐标,以虚部为纵坐标,绘出曲线,曲线数等于列数。

⑵ plot(x,y,[linspec])其中linspec是可选的,用它来说明线型。

当x和y为同维向量时,以x为横坐标,y为纵坐标绘制曲线;当x是向量,y是每行元素数目和x维数相同的矩阵时,将绘出以x为横坐标,以y中每行元素为纵坐标的多条曲线,曲线数等于矩阵行数;当x为矩阵,y为相应向量时,使用该命令也能绘出相应图形。

⑶ plot(x1,y1,x2,y2,x3,y3……)能够绘制多条曲线,每条曲线分别以x和y为横纵坐标,各条曲线互不影响。

线型和颜色MATLAB可以对线型和颜色进行设定,线型和颜色种类如下:线:—实线:点线 -.虚点线——折线点:.圆点 +加号 *星号 x x型 o 空心小圆颜色:y 黄 r 红 g 绿 b 蓝 w 白 k 黑 m 紫 c 青特殊的二维图形函数表5 特殊2维绘图函数[1] 直方图在实际中,常会遇到离散数据,当需要比较数据、分析数据在总量中的比例时,直方图就是一种理想的选择,但要注意该方法适用于数据较少的情况。

直方图的绘图函数有以下两种基本形式。

·bar(x,y) 绘制m*n 矩阵的直方图.其中y 为m *n 矩阵或向量,x 必须单向递增。

·bar(y) 绘制y 向量的直方图,x 向量默认为x=1:m close all; %关闭所有的图形视窗。

x=1:10;y=rand (size(x )); bar(x,y ); %绘制直方图.123456789100.51Bar()函数还有barh ()和errorbar ()两种形式,barh()用来绘制水平方向的直方图,其参数与bar()相同,当知道资料的误差值时,可用errorbar ()绘制出误差范围,其一般语法形式为:errorbar (x,y,l,u)其中x,y 是其绘制曲线的坐标,l ,u 是曲线误差的最小值和最大值,制图时,l 向量在曲线下方,u 向量在曲线上方。

实验三 信号卷积的MATLAB实现

实验三 信号卷积的MATLAB实现

实验三信号卷积的MATLAB实现一、实验名称:信号卷积的MATLAB实现二、实验目的:1.增加学生对卷积的认识2.了解MATLAB这个软件的一些基础知识3.利用MATLAB计算信号卷积4.验证卷积的一些性质三、实验原理:用MATLAB实现卷积我们先必须从信号下手,先把信号用MATLAB语句描述出来,然后再将这些信号带入到我们写好的求卷积的函数当中来计算卷积。

在本章中我们将信号分为连续信号和离散序列两种来实现卷积并验证卷积的一些性质。

MATLAB强大的图形处理功能及符号运算功能,为我们实现信号的可视化提供了强有力的工具。

在MATLAB中通常有两种方法来表示信号,一种是用向量来表示信号,另一种则是用符号运算的方法来表示信号。

用适当的MATLAB 语句表示出信号后,我们就可以利用MATLAB的绘图命令绘制出直观的信号波形。

连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应的信号。

从严格意义上来讲,MATLAB并不能处理连续信号,在MATLAB中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。

在MATLAB中连续信号可用向量或符号运算功能来表示。

1.向量表示法对于连续时间信号f(t),我们可以用两个行向量f和t来表示,其中向量t是行如t=t1:p:t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为中止时间,p为时间间隔。

向量f为连续信号f(t)在向量t所定义的时间点上的样值。

例如对于连续信号f(t)=sin(t),我们可以用如下两个向量来表示:t=-10:1.5:10;f=sin(t)用上述向量对连续信号表示后,就可以用plot命令来绘出该信号的时域波形。

Plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。

命令如下:plot(t,f)title(‘f(t)=sint’)xlabel(‘t’)axis([-10,10,-1.1,1.1])绘制的信号波形如图3.1所示,当把时间间隔p取得更小(如0.01)时,就可得到sint较好的近似波形,如图3.2所示。

实验三_M_文件及_MATLAB_程序设计与调试

实验三_M_文件及_MATLAB_程序设计与调试

实验三M 文件及MATLAB 程序设计与调试一、实验目的全面掌握在MA TLAB 下进行程序设计的有关问题,具体涉及到M 脚本文件和M 函数文件的编写、全局和局部变量的使用、流程控制结构、提高程序执行效率的设计技术、程序调试等问题。

二、实验内容1、关于M 脚本文件和M 函数文件MATLAB 的M 文件有两类:脚本文件和函数文件。

(1)脚本文件——将原本要在MATLAB 的指令窗口中直接输入的语句,放在一个以.m 为后缀的,称为脚本文件中。

有了脚本文件,可直接在MATLAB 中输入脚本文件名(不含后缀)。

MATLAB 会打开这一脚本文件,并依次执行脚本文件中的每一条语句,这与在MATLAB 中直接输入语句的结果完全一致。

(2)函数文件——它的第一行必须是函数定义行。

M 函数文件由5 部分构成:◆函数定义行◆H1 行◆函数帮助文本◆函数体◆注释注意:在函数文件中,除了函数定义行之外,其它部分都是可以省略的。

但作为一个函数,为了提高函数的可用性,应加上H1 行和函数帮助文本,为了提高函数的可读性,应加上适当的注释。

例如:function y = mean(x)% MEAN Average or mean value.% For vectors, MEAN(X) is the mean value of the elements in X.% For matrices, MEAN(X) is a row vector containing the mean value of each column.[m,n]=size(x);if m==1% Determine whether x is a vectorm=n;endy = sum(x)/m;①函数定义行:function y = mean(x)function 为函数定义的关键字,mean 为函数名,y 为输出变量,x 为输入变量当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。

Matlab实验三 绘制根轨迹

Matlab实验三 绘制根轨迹
Matlab
for
Principles of Automatic Control
实验三 绘制根轨迹 1: 绘制根轨迹 2: 参量分析
① 绘制根轨迹 rlocus(sys)
Gk
(s)
K *(s 1) (s 2)(s 3)
rlocus(num, den)
rlocus(sys,k)
②参量分析(根轨迹图上一顿乱点即可)
K1
(s a )nm
1
根轨迹渐进线的方程是新的根轨迹方程。
Байду номын сангаас
• 例: 绘制根轨迹及其渐近线
G(s)
K1
s(s 1)(s 2)
⑥讨论增加零点对根轨迹的影响 试试-2至-4之间的零点
G(s)
K1
s(s 1)(s 2)
r=rlocus(sys)
Gk
(s)
K *(s 1) (s 2)(s 3)
r=rlocus(num, den)
[r,k]=rlocus(sys)
[r,k]=rlocus(num, den)
③测量出根轨迹增益和对应闭环极点坐标,
在窗口显示
Gk
(s)
K *(s 1) (s 2)(s 3)
[k,poles] = rlocfind(sys)
[k,poles] = rlocfind(sys,p) P为已知的要研究的闭环极点。
④绘制零、极点以及在窗口显示零极点
pzmap(sys)
Gk
(s)
K *(s 1) (s 2)(s 3)
[p,z]=pzmap(sys) 求解零极点的好方法
⑤绘制根轨迹渐近线
一般人我不告诉他:
当根轨迹渐进线与实轴的交点已求出后, 可得到方程,这是根轨迹渐进线的方程。

实验三:使用matlab求解最小费用最大流算问题

实验三:使用matlab求解最小费用最大流算问题

北京联合大学实验报告项目名称: 运筹学专题实验报告学院: 自动化专业:物流工程班级: 1201B 学号:2012100358081 姓名:管水城成绩:2015 年 5 月 6 日实验三:使用matlab求解最小费用最大流算问题一、实验目的:(1)使学生在程序设计方面得到进一步的训练;,学习Matlab语言进行程序设计求解最大流最小费用问题。

二、实验用仪器设备、器材或软件环境计算机,Matlab R2006a三、算法步骤、计算框图、计算程序等1.最小费用最大流问题的概念。

在网络D(V,A)中,对应每条弧(vi,vj)IA,规定其容量限制为cij(cij\0),单位流量通过弧(vi,vj)的费用为dij(dij\0),求从发点到收点的最大流f,使得流量的总费用d(f)为最小,即mind(f)=E(vi,vj)IA2。

求解原理。

若f是流值为W的所有可行流中费用最小者,而P是关于f的所有可扩充链中费用最小的可扩充链,沿P以E调整f得到可行流fc,则fc是流值为(W+E)的可行流中的最小费用流.根据这个结论,如果已知f是流值为W的最小费用流,则关键是要求出关于f 的最小费用的可扩充链。

为此,需要在原网络D的基础上构造一个新的赋权有向图E(f),使其顶点与D的顶点相同,且将D中每条弧(vi,vj)均变成两个方向相反的弧(vi,vj)和(vj,vi)1新图E(f)中各弧的权值与f中弧的权值有密切关系,图E(f)中各弧的权值定义为:新图E(f)中不考虑原网络D中各个弧的容量cij。

为了使E(f)能比较清楚,一般将长度为]的弧从图E(f)中略去.由可扩充链费用的概念及图E(f)中权的定义可知,在网络D中寻求关于可行流f的最小费用可扩充链,等价于在图E(f)中寻求从发点到收点的最短路.因图E(f)中有负权,所以求E(f)中的最短路需用Floyd算法。

1.最小费用流算法的框图描述。

图一2.计算最小费用最大流MATLAB源代码,文件名为mp_mc.mfunction[Mm,mc,Mmr]=mp_mc(a,c)A=a; %各路径最大承载流量矩阵C=c; %各路径花费矩阵Mm=0; %初始可行流设为零mc=0; %最小花费变量mcr=0;mrd=0;n=0;while mrd~=inf %一直叠代到以花费为权值找不到最短路径for i=1:(size(mcr’,1)—1)if a(mcr(i),mcr(i+1))==infta=A(mcr(i+1),mcr(i))—a(mcr(i+1),mcr(i)); elseta=a(mcr(i),mcr(i+1));endn=min(ta,n);%将最短路径上的最小允许流量提取出来endfor i=1:(size(mcr’,1)-1)if a(mcr(i),mcr(i+1))==infa(mcr(i+1),mcr(i))=a(mcr(i+1),mcr(i))+n;elsea(mcr(i),mcr(i+1))=a(mcr(i),mcr(i+1))—n;endendMm=Mm+n;%将每次叠代后增加的流量累加,叠代完成时就得到最大流量 for i=1:size(a,1)for j=1:size(a’,1)if i~=j&a(i,j)~=infif a(i,j)==A(i,j) %零流弧c(j,i)=inf;c(i,j)=C(i,j);elseif a(i,j)==0 %饱合弧c(i,j)=inf;c(j,i)=C(j,i);elseif a(i,j)~=0 %非饱合弧c(j,i)=C(j,i);c(i,j)=C(i,j);endendendend[mcr,mrd]=floyd_mr(c) %进行叠代,得到以花费为权值的最短路径矩阵(mcr)和数值(mrd)n=inf;end%下面是计算最小花费的数值for i=1:size(A,1)for j=1:siz e(A’,1)if A(i,j)==infA(i,j)=0;endif a(i,j)==infa(i,j)=0;endendendMmr=A—a; %将剩余空闲的流量减掉就得到了路径上的实际流量,行列交点处的非零数值就是两点间路径的实际流量for i=1:size(Mmr,1)for j=1:size(Mmr’,1)if Mmr(i,j)~=0mc=mc+Mmr(i,j)*C(i,j);%最小花费为累加各条路径实际流量与其单位流量花费的乘积endendend利用福得算法计算最短路径MATLAB源代码,文件名为floyd_mr。

MATLAB(实验三)

MATLAB(实验三)

实验三1.利用 rand 函数编写一个新的函数 rand2,该函数能够产-之间的随机数,其中 n 为任意正数。

该函数以 rand 生[],n n函数为子函数。

解:function x=rand2(a,b,n)x=round(rand(a,b)*2*n-n);2.依据第五章创建的结构体,使用该结构体对一个班级的学生成绩进行管理,如计算总分、平均分、排列名次等。

解:student=struct('name',{'Hunter','Allen','Henry'},'number',{'1801','1803','1827'},'score',{[65 89 59],[48 63 75],[74 55 88]})student(1)Hunter_sum=sum(student(1).score)Hunter_mean=mean(student(1).score)student(2)Allen_sum=sum(student(2).score)Allen_mean=mean(student(2).score)student(3)Henry_sum=sum(student(3).score)Henry_mean=mean(student(3).score)score_sum=[ Hunter_sum,Allen_sum,Henry_sum];sort(score_sum,'descend')3.编写程序判断输入的年份是否为闰年并计算这一天是一年当中的第几天(包括当天)。

其中要求把判断闰年和计算天数的程序分别编写为两个函数文件leapyear.m和countday.m,并在主程序中输入要计算的年、月、日,实现对这两个函数的调用,输出信息说明该年是否是闰年和该天是一年的第几天。

实验三利用MATLAB进行系统频域分析

实验三利用MATLAB进行系统频域分析

实验三利用MATLAB进行系统频域分析系统频域分析是指通过对系统的输入输出信号进行频域分析,从而分析系统的频率响应特性和频率域特征。

利用MATLAB进行系统频域分析可以方便地实现信号的频谱分析、滤波器设计等功能。

下面将介绍如何利用MATLAB进行系统频域分析的基本步骤。

一、信号频谱分析1. 将信号导入MATLAB环境:可以使用`load`函数导入数据文件,或者使用`audioread`函数读取音频文件。

2. 绘制信号的时域波形图:使用`plot`函数绘制信号的时域波形图,以便对信号的整体特征有一个直观的了解。

3. 计算信号的频谱:使用快速傅里叶变换(FFT)算法对信号进行频谱分析。

使用`fft`函数对信号进行频域变换,并使用`abs`函数计算频谱的幅度。

4. 绘制信号的频谱图:使用`plot`函数绘制信号的频谱图,以便对信号的频率特征有一个直观的了解。

二、滤波器设计1.确定滤波器类型和要求:根据系统的要求和信号的特性,确定滤波器的类型(如低通滤波器、高通滤波器、带通滤波器等)和相应的频率响应要求。

2. 设计滤波器:使用MATLAB中的滤波器设计函数(如`fir1`、`butter`、`cheby1`等)来设计滤波器。

这些函数可以根据指定的滤波器类型、阶数和频率响应要求等参数来生成相应的滤波器系数。

3. 应用滤波器:使用`filter`函数将滤波器系数应用到信号上,得到滤波后的信号。

三、系统频率响应分析1. 生成输入信号:根据系统的要求和实际情况,生成相应的输入信号。

可以使用MATLAB中的信号生成函数(如`square`、`sine`、`sawtooth`等)来生成基本的周期信号,或者使用`randn`函数生成高斯白噪声信号。

2.绘制输入信号的频谱图:使用前面提到的信号频谱分析方法,绘制输入信号的频谱图。

3. 输入信号与输出信号的频域分析:使用`fft`函数对输入信号和输出信号进行频谱分析,并使用`abs`函数计算频谱的幅度。

信号与系统matlab实验习题3 绘制典型信号及其频谱图

信号与系统matlab实验习题3  绘制典型信号及其频谱图

绘制典型信号及其频谱图答案在下面四个常用信号及其傅里叶变换式如表1所示。

(1)绘制单边指数信号及其频谱图的MATLAB程序如下:close all;E=1;a=1;t=0:0.01:4;w=-30:0.01:30;f=E*exp(-a*t);F=1./(a+j*w);plot(t,f);xlabel('t');ylabel('f(t)');figure;plot(w,abs(F));xlabel('\omega');ylabel('|F(\omega)|');figure;max_logF=max(abs(F));plot(w,20*log10(abs(F)/max_logF));xlabel('\omega');ylabel('|F(\omega)| indB');figure;plot(w,angle(F));xlabel('\omega');ylabel('\phi(\omega)');请更改参数,调试此程序,绘制单边指数信号的波形图和频谱图。

观察参数a 对信号波形及其频谱的影响。

注:题目中阴影部分是幅频特性的对数表示形式,单位是(dB),请查阅相关资料,了解这种表示方法的意义及其典型数值对应的线性增益大小。

(2)绘制矩形脉冲信号、升余弦脉冲信号和三角脉冲信号的波形图和频谱图,观察并对比各信号的频带宽度和旁瓣的大小。

(3)更改参数,调试程序,绘制单边指数信号的波形图和频谱图。

观察参数a对信号波形及其频谱的影响。

答案附上程序代码:close all;E=1;a=1;t=0:0.01:4;w=-30:0.01:30;f=E*exp(-a*t);F=1./(a+j*w);plot(t,f);xlabel('t');ylabel('f(t)');figure;plot(w,abs(F));xlabel('\omega');ylabel('|F(\omega)|';E=1,a=1,波形图 频谱图更改参数E=2,a=1;更改参数a ,对信号波形及其频谱的影响。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2014秋2012级《MATLAB程序设计》实验报告班级:软件C121姓名:冯杨腾学号:125692实验三 MATLAB程序设计一、实验目的1、掌握建立和执行M文件的方法。

2、掌握选择结构、多分支选择结构程序的编程方法。

3、掌握多种循环结构程序的编程方法。

4、掌握定义函数文件和调用函数文件的方法。

二、实验内容1、MATLAB M文件的创建与使用。

(1)建立自己工作目录,如D:\MATLAB。

在File菜单中,单击Set Path菜单项,在弹出对话框中建立目标文件夹,:单击Add Folder按钮,将自己的工作目录D:\MATLAB添加到搜索目录之中,按Save按钮保存,如图1。

图1 工作目录设置(2)在M文件编辑器中编制命令行文件。

在File菜单中,单击New—>M-File,弹出M文件编辑器,如图2:图2 编辑器在编辑器中输入如下命令程序:%求小于2000且为2的整数次幂的正整数。

f(1)=2;k=1;while f(k)<1000f(k+1)=f(k)*2;k=k+1;endf,k调试后,将其以形式保存在D:\MATLAB中。

(3)命令行程序运行。

进入命令窗口,键入test1,观察运行结果:f =Columns 1 through 92 4 8 16 32 64 128 256512Column 101024k =10(4)按上述步骤,在在编辑器中输入如下函数文件:function f=tt(n)%求小于任何正整数且为2的整数次幂的正整数。

%c=n(n)%n 可取任意正整数。

%2004年8月。

f(1)=2; k=1;while f(k)<ceil(n/2) %ceil 函数取最近的正整数 f(k+1)=f(k)*2; k=k+1; end f调试后,将其以形式保存在D:\MATLAB 中。

(5)进入命令窗口,键入test2(9),观察程序运行结果。

>> test2(9) f =2 4 8 ans =2 4 82、编写一个函数M 文件,计算下面函数的值,给出标量x 的值,调用该函数后,返回y 的值。

sin ,(),036,3x x y x x x x x ≤⎧⎪=<≤⎨⎪-+>⎩选择一些数据测试编写的函数。

源程序 :function [y]=myfun(x)if x<=0y=sin(x);elseif x>3y=-x+6;elsey=x;end运行结果:>> test(0)ans =>> test(2)ans =2>> test(5)ans =13、编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。

其中方均根值(Root Mean Square)的计算公式为:rms=并用下面数据测试你写的函数:(1)x=sin(0::6*pi)(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。

源程序:function [sum_x,m_x,max_x,min_x,rsm_x] = myfun7(x)sum_x=0;a=x;for k=a;sum_x=sum_x+k;n=length(x);for i=1:nm_x=sum_x/n;endendmin_x=x(1);for t=1:nif min_x>x(t)min_x=x(t);endendmax_x=x(1);for t=1:nif max_x<x(t)max_x=x(t);endendsum_x1=0;for t=1:nsum_x1=sum_x1+x(t).^2; rms_x=sqrt(sum_x1/n); endsum_xm_xmax_xmin_xrms_x运行结果:(1)>> x=sin(0::6*pi);>> myfun7(x)sum_x =m_x =max_x =min_x =rms_x =2)>> x=rand(1,200);>> myfun7(x)sum_x = m_x = max_x = min_x = rms_x =4、编写一个函数M 文件,若给出一个向量12[,,]n x x x x =,函数返回如下范德蒙矩阵。

122221211112111n nn n n n x x x x x x x x x ---⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦例如在命令窗口输入>>v =myvander([2 3 4 5]),得1111234549162582764125v ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦,同时生成一些数据测函数。

源程序:function[v]=myvander(x) n=length(x); v=ones(n,n); for j=1:n for i=1:nv(i,j)=x(j)^(i-1); end end运行结果:x=([2 3 4 5]); >> test(x) ans =1 1 1 12345 4 9 16 25 8 27 64 125 >> x=([1 2 3 ]); >> test(x) ans =1 1 1 123 14 95、分别使用while 和for 编写命令文件,用循环语句编程计算s 值:10322()n s n n ==-∑同时对编写的文件设置断点,观察变量取值的变化情况。

(1)For 循环:function[]=test() s=0;for n=2:1:10s=s+(n^3-n^2); enddisp(s) end运行结果:>> test() 2640(2)While 循环:function[]=test() s=0; n=2;while n<=10s=s+(n^3-n^2); n=n+1; enddisp(s) end运行结果:>> test()26406、数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。

重复此过程,最终得到的结果为1。

如:2?13?10?5?16?8?4?2?16?3?10?5?16?8?4?2?1建立命令M文件,完成上述功能,要求显示数字处理过程。

源程序:function X = test()n=input('请输入一个正整数');X(1)=n;i=2;while n~=1if rem(n,2)==0n=n/2;elseif rem(n,2)==1n=n*3+1;endX(i)=n;i=i+1;endend运行结果:请输入一个正整数2ans =2 1请输入一个正整数3ans =3 10 5 16 84 2 1请输入一个正整数12ans =12 6 3 10 5 16 8 4 2 17、设计一个学生身高的管理系统,输出身高的基本分为5等:很高、较高、中等、较矮、矮,其中190cm以上为“很高”,[180cm,190cm)区间为“较高”,[170cm,180cm)为“中等”,[1160cm,170cm)为“较矮”,160cm以下为“矮”,要求分别用if 语句和switch语句实现(1)for语句:n=100;for i =1:na=input('请输入身高');if a >disp('很高')elseif a>=&&a<disp('较高')elseif a>=&&a<disp('中等')elseif a>=&&a<disp('较矮')elseif a<disp('矮')endend运行结果:请输入身高很高请输入身高较高请输入身高中等请输入身高较矮请输入身高矮switch语句:x=input('身高为:');n=(x-100)/10;switch floor(n)case{10,9}disp('很高');case{8}disp('较高');case{7}disp('中等');case{6}disp('较矮');case{5,4,3,2,1,0}disp('矮')end运行结果:身高为:195很高身高为:185较高身高为:175中等身高为:165较矮身高为:155矮8、Fibonacci数组的元素满足Fibonacci规则:a k+2=a k+a k+1,(k=1,2,3,…);且a1= a2=1。

请设计一段程序,求出该数组中第一个大于10000的元素要求显示的结果为:i=21a(i)=10946或者a(21)=10946源程序:a(1)=1;a(2)=1;i=2;while a(i)<=10000a(i+1)=a(i-1)+a(i);i=i+1;end;i,a(i)运行结果:i =21ans =10946源程序:n=100;a(1)=1;a(2)=1for i=3:na(i)=a(i-1)+a(i-2);if a(i)>=10000a(i),break;end;end;i运行结果:a =Columns 1 through 121 123 5 8 13 21 34 55 89 144Columns 13 through 21233 377 610 987 1597 2584 4181 6765 10946ans =10946i =219、编写一个函数文件,用于求两个输入矩阵的乘积和点乘,然后在命令行窗口中调用该函数,要求:(1)当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。

(2)当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘(3)当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘”源程序:function [] = test(x,y)[m,n]=size(x);[i,j]=size(y);if m==n&&i==j&&m==iz1=x*y;z2=x.*y;disp(z1);disp(z2);elseif n==iz1=x*y;disp(z1);elseif m==i&&n==jz2=x.*y;disp(z2);elseif n~=idisp('这两个矩阵不能相乘');endend运行结果:1)>> x=[1 2 3; 4 5 6;7 8 9];>> y=[1 2 3; 4 5 6;7 8 9];>> test(x,y)30 36 4266 81 96102 126 1501 4 916 25 3649 64 812)>> y=[1 2 3; 4 5 6];>> x=[1 2 3; 4 5 6];>> test(x,y)1 4 916 25 363)>> x=[1 2 2; 2 3 3;3 4 4];>> y=[1 2 3; 4 5 6];>> test(x,y)这两个矩阵不能相乘10、编写一个阶乘函数,然后在如下程序中调用该函数,“分别使用for和while语句找出最小的n值,使得n!>10100,并求出n!”(1)For语句:Function[]=factorial()n=1;s=1;for n=1:10000s=s*n;if(s>10100)break;enddisp(n);end运行结果:1234567(2)While语句:function[]=factorial()n=1;s=1;while s<=10100n=n+1;s=s*n;enddisp(n);end运行结果:>> factorial()811、下列程序用来判断一个人的体温是否处于危险状态。

相关文档
最新文档