matlab循环程序

matlab循环程序
matlab循环程序

循环实验课题(二)

要求:第二次实验作业所有程序编辑在一个m 文件中,文件名格式:sy2zq20084321(第一部分sy2是实验课题代号,第二部分zq 是名字张强拼音缩写,第三部分20084321是学号),星期一的班在周六前将作业程序的m 文件发至老师邮箱:chxue180@https://www.360docs.net/doc/d613231239.html, ,星期四的班在下周三前将作业程序的m 文件发至老师邮箱:chxue180@https://www.360docs.net/doc/d613231239.html, 邮件主题请注明为:第二次作业姓名学号

第一大题:运用条件控制语句、循环语句等基本编程语句编写程序,实现根据输入的数值特性,按分段函数计算出相应的函数值;

1) 构造由键盘输入x 的值,由分段函数y1确定函数值

???<+≥-=004sin 213x x

e x x x y x 运行时键盘分别输入值x = 2π x = -12由程序得出相应y 1的函数值

2) 构造由键盘输入x 的值,由分段函数??

???=<>+=040303522

x x x x x y 确定函数值,运行时键盘分别输入值x = 45,x = -32时y 2的值.

第二大题:运用条件控制语句、循环语句等基本编程语句编写程序,实现有规律元素的矩阵生成;实现各类特殊函数及数列的生成;

1) 由for 循环构造矩阵A3

?????????

? ?

?=521111252111125211112521111252

1111253A

2) 用while 循环构造求调和级数11n n ∞

=∑前n 项和,项数由键盘输入。并求出n=15,n=20时的和S15与S20。

3) 用循环求费波那契数列的前40个数,以四个数为一行排成10×4的数阵F

(费波那契数列的第一项、第二项是1,从第三项起各项是其前两项的和)

4) 已知

用循环语句编程求前n 项和S n ,当a = 2,n = 6时求S n

(即:2+22+222+2222+22222+222222)

第三大题:运用多分枝控制语句,实现自动转换成绩制式功能. 用switch 语句编程实现输入百分制的成绩,输出90~100为优秀,70~89为良好,60~69为及格,60以下为不及格的等级制成绩。

第四大题:用switch 语句编程实现运输费用的计算:

运输公司对用户计算运费,距离s 越远,每公里运费越低。折扣标准如下:

s<250km 没折扣

250≤s<500 2%折扣

500≤s<1000 5%折扣

1000≤s<2000 8%折扣

2000≤s<3000 10%折扣

3000≤s 15%折扣

设每公里每吨货物基本运费为p,货物重为w ,距离为s,折扣为d,则编程计算总费用f .其f 的计算模型为:

)1(d s w p f -???= +++ aa a

a n a aa 个

利用MATLAB实现循环卷积.doc

一、实验目的 1.利用MATLAB 实现循环卷积。 2.比较循环卷积与线性卷积的区别。 二、实验条件 PC 机,MATLAB7.0 三、实验内容 1)循环卷积的定义:两个序列的N 点循环卷积定义为: )0()()()]()([1 0N n m n x m h n x n h N k N N <≤-=?∑-= 利用MATLAB 实现两个序列的循环卷积可以分三个步骤完成: (1)初始化:确定循环点数N ,测量输入2个序列的长度。 (2)循环右移函数:将序列x(n)循环右移,一共移N 次(N 为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V 。 (3)相乘:将x(n)移位后组成的矩阵V 与第二个序列h(n)对应相乘,即得循环卷积结果。程序如下: 程序一: clear;close all ; N=10; x1=[6 15 -6 3 5 7 0 1]; x2=[7 1 2 9 4 3 20 6]; xn1=length(x1); xxn1=0:xn1-1; xn2=length(x2); xxn2=0:xn2-1; subplot(3,1,1); stem(xxn1,x1); subplot(3,1,2); stem(xxn2,x2); x11=fft(x1,N);

x12=fft(x2,N); y11=x11.*x12; y1=ifft(y11,N); subplot(3,1,3); n=0:length(y1)-1; stem(n,y1,'.'); title('循环卷积的结果'); xlabel('n');ylabel('y1(n)'); 运行后所得图形如下: 观察所得的循环卷积结果发现并没有呈现周期性的序列,因此将程序做下列改变。程序二: clear;close all; N=40; x1=[6 15 -6 3 5 7 0 1]; x2=[7 1 2 9 4 3 20 6]; x2=[x2,x2,x2,x2]; xn1=length(x1); xxn1=0:xn1-1; xn2=length(x2); xxn2=0:xn2-1; subplot(3,1,1);

matlab循环语句

matlab 基本语句 1.循环语句for for i=s1:s3:s2 循环语句组 end 解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。 例:求1到100的和,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环. 2.循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end 3.if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 end 4.关系表达式:

=,>,<,>=,<=,==(精确等于) 5.逻辑表达式:|(或),&(且) 6.[n,m]=size(A)(A为矩阵) 这样可以得到矩阵A的行和列数 n=length(A),可以得到向量A的分量个数;如果是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。 7.!后面接Dos命令可以调用运行一个dos程序。 8.常见函数: poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如 a=[1,0,0;0,2,0;0,0,3],则poly(a)=1 -6 11 -6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。 compan():可以求矩阵的伴随矩阵. sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。 MATLAB编程环境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件编辑器,这是最好的编程环境。 M-文件的扩展名为“.m”。M-文件的格式分为两种: ①λ M-脚本文件,也可称为“命令文件”。 ② M-函数文件。这是matlab程序设计的主流。λ 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构是:顺序结构、选择结构和循环结构。其中顺序结构是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构是由两个程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。 看图可知,在顺序结构中,这两个程序模块是顺序执行的,即先执行<程序

matlab中循环语句用法

循环结构:for语句 格式: for 循环变量=表达式1:表达式2:表达式3 循环体 end 【注】:表达式1:循环变量初值, 表达式2:步长,为1时,可省略; 表达式3:循环变量终值。 或: for循环变量=矩阵表达式 循环体 end 【注】:执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。 2 while语句: 格式: while(条件) 循环体 end 【注】:条件成立时,执行循环体 3

break语句&& continue语句: break:破坏,破坏循环,终止循环的进行,跳出循环,程序将执行循环语句的下一语句。 continue:继续,循环继续,程序将跳过循环体中剩下的语句,继续下一次循环。 4 循环的嵌套—多重循环结构 5 选择结构:if-else语句 格式: if 表达式 程序模块 end 或 if 表达式 程序模块1 else 程序模块2 end 6 switch语句: 格式:

switch 表达式 case 数值1 程序模块1 case 数值2 程序模块2 case 数值3 程序模块3 ...... otherwise 程序模块n end 执行过程:首先计算表达式的值, 然后将其结果与每一个case后面的数值依次进行比较, 如果相等,则执行该case的程序模块; 如果都不相等,则执行otherwise模块中的语句。 switch语句可以替代多分支的if语句,而且switch语句简洁明了,可读性更好。 7 matlab中一些基本知识: END 注意事项 for循环可以通过break语句结束整个for循环

matlab中循环语句用法

while语法: while expression statements end 说明:while expression, statements, end 计算一个表达式,并在该表达式为true 时在一个循环中重复执行一组语句。表达式的结果非空并且仅包含非零元素(逻辑值或实数值)时,该表达式为true。否则,表达式为false。 示例代码如下: function [sum] = summation(ratio, head, top) sum = 0; while (head <= top) sum = sum + ratio ^ head; head = head + 1; end end

假设ratio = 2,head = 0,top = 63 matlab循环语句for怎么用? matlab中for语句使用方法和应用实例 for循环语句 1、一般格式为: for x(循环变量)= array(数组) commands(执行的循环代码) end 2、array可以是一个数字,也可以是数组,例如输入:for a=5 for a=1:5 for a=1:1:5(以1为步长到5)

只不过在a=1:5和a=1:1:5时,会显示之间的结果,a=5时只显示最后结果。a的变动就是第一次循环a=1,第二次循环a=2,第三次循环a=3,第四次循环a=4,第五次循环a=5。 3、(commands)就是命令,其中的命令行可以很多很多,最常见的就是调用上面说的a变动比如: for a=10 %循环10次 s=a+1 %循环语句 end %结束 上面的a不需要再指定,a的变化就是上面说的先是1,然后是2,3,…那么s就是先s=1+1=2,然后再s=2+1=3,s=3+1=4,…,s=10+1=11,循环结束,就是一个连续加s的指令,最后=11。 4、for语句可以嵌套的,和C一样 for a=5 %第一个for循环

Matlab for 循环

for 循环语句 for语句作用是按照预先设定的循环步骤重复执行某语句段, 其语法: for循环控制变量=存储着该变量依次所取值的一个向量 循环语句块, 本块重复执行的次数由上方向量的长度决定, 每次执行, 循环控制变量依次取该向量中的值. end 注意, 如果你matlab的for 循环语句有其独有的特点, 它使用一个向量来控制循环, 循环次数由向量的长度来决定, 而每次循环都依次从向量中取值. 这使得Matlab循环更灵活多样, 其循环变量取值可以不按照特定的规律; 但是另一方面, Matlab 的for循环也有独特的限制, 当次循环中改变循环变量赋值, 不会代入下次循环, 所以除非在其中用break提前退出, Matlab循环的次数是预先定好的. 举个例子: for a=1:2:7 , 将循环4次, a的取值依次是1, 3, 5, 7. 另一个例子: for a=[1, 5, 3, 4, 6], 这个循环将被执行5次, 循环控制变量a的取值依次为: 1, 5, 3, 4, 6. 如果还对for循环这个特性不太熟悉, 试试下面这段Matlab代码: for a=[1 5 3 4 6] disp(['第', num2str(find(a==[1 5 3 4 6])) , '次循环, a的取值为: ',num2str(a)] ); end While循环 与for循环不同, while循环不预先指定好循环次数, 只要符合条件循环就一直执行下去, while语句的语法: while判断条件 循环语句块 end 此处的'判断条件'和if语句中的那个一样, 要求这个变量或者表达式最终得到一个逻辑型标量, 每次循环之前, while语句会判断这个条件是否满足, 如果满足则开始循环模块, 否则跳过整个循环语句. 在循环语句块中控制循环退出有两种办法, 其一是直接或间接地改变'判断条件'的值, 使之为'false', 其二是在循环块中执行'break' 语句直接退出循环. 一个例子, 每次循环变量a都将增加1, 我们欲控制使a大于10时终止循环, 下面分别采用上述提到的两种方法控制循环. approach 1 a=0; while a<=10 a=a+1; disp(a); end approach 2: a=0; while 1 %由于判断条件是'1', 永远为'true', 所以如果不在循环块中设置跳出条件,循环将永久性进行下去! a=a+1; disp(a); if a>=10 break; end

MATLAB编程如何不用for循环

MATLAB编程如何不用for循环--以DFT变换矩阵为例 缘起:大家都知道MATLAB中用for循环编写的代码执行起来效率不高,如何用矩阵和向量的运算提升效率对每一个用matlab的人来说都是很有必要的,但是此项功夫高手一般不愿意给初学者讲,此功夫是高手和低手的分水岭,高手们更是拿此功夫在初学者面前炫耀。本人当初怀着很恭敬的心向高手请教,高手笑笑说这要我自己编。出于让后来人受益,帮助和我一样无助的求知者。本人今天话了一天时间将此问题研究下,并且将代码毫无保留的公布出来。希望大家能够受益,阿弥陀佛! 上述W矩阵的第一列代表直流成分,第二列到最后一列是信号的交流成分,可以看出倍频关系!我以前不知道DFT 可以通过矩阵表示。注意matlab中dftmtx实现上述W矩阵的时候没有用1/sqrt(N) 进行归一化!可以通过dftmtx(2)验证,没有1/sqrt(2)。 例1 DFT matrix 是Hermitian的 Nfft = 8; xn=rand(1,Nfft); y=dftmtx(Nfft)*xn.' %结果是个列向量y=dftmtx(Nfft)*x.' 和y=fft(x,Nfft)是等价的 y = xn*dftmtx(Nfft) %结果是个行向量 y=fft(xn,Nfft) %结果是个行向量 %dft变换公式,n代表时域采样点,k代表频域采样点 Y(k)=sum(x.*exp(-j*2*pi*n*k)) 相应的,dftmtx(Nfft)产生的矩阵中,第k行,n列元素=exp(-j*2*pi*k*n/Nfft),与x.'相乘正好对应fft变换后的每个频点值。

例1:双重循环求DFT N = 8; x=rand(1,N); for k=0:N-1 sum=0; % 注意每个X(k)的值不应该受上次计算的影响 for m=0:N-1 w=exp(-j*2*pi/N.*m.*k); %DFT matrix 的每一行的元素是不同的 sum=sum+x(m+1).*w; % 这个循环实际上是计算DFT matrix的每一行与信号x的内积 end X(k+1)=sum; %Matlab下标从1开始 end % 注意X 是个行向量,是个数组,我以前不知道X(k)的循环赋值的结果是个行向量 y=fft(x,N) %验证 例2:单循环求DFT %% x 是行向量的Version,结果X也是行向量 N = 8; x=rand(1,N); m=0:N-1; sum=0; for k=0:N-1 %核心思想是内积运算:x躺着,后面的必须站着 X(k+1)= x*exp(-j*2*pi/N.*m'.*k) ; % 以前这样的表达物理含义是不明确的--> X(k+1)= x*exp(-j*2*pi/N.*m.*k).' ; end y=fft(x,N) %验证 %% x 是列向量的Version,结果X是行向量,fft(x)的结果是列向量 N = 8; x=rand(1,N)'; m=0:N-1; sum=0; for k=0:N-1 % 核心思想是内积运算:x躺着,后面的必须站着 X(k+1)= exp(-j*2*pi/N.*m.*k)*x ; % 以前这样的表达物理含义是不明确的--> X(k+1)= x*exp(-j*2*pi/N.*m.*k).' ; end y=fft(x,N) %验证结果y是个列向量,X是y的转置。因为X按下标赋值的结果是个行向量! 例3:不用循环求DFT %% x 是行向量的Version,结果X也是行向量 N = 8; xn=rand(1,N); %一次去掉2个循环,不要试图一次去掉一个 n=[0:1:N-1]; k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n'*k; %看看如何不用for循环来实现,向量的外积N-by-1 multiply 1-by-N WNnk=WN.^nk; %WNnk就是dftmtx(8),dftmtx原来是这样构造的 Xk=xn*WNnk; % 究竟nk这个向量外径是n'*k还是k'*n要看内积在哪一维执行

挺好的——matlab循环语句

Matlab 基本语句 1.循环语句for for i=s1:s3:s2 循环语句组 end 解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。 例:求1到100的和,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环. 2.循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end 3.if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 end 4.关系表达式:

=,>,<,>=,<=,==(精确等于) 5.逻辑表达式:|(或),&(且) 6.[n,m]=size(A)(A为矩阵) 这样可以得到矩阵A的行和列数 n=length(A),可以得到向量A的分量个数;如果是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。 7.!后面接Dos命令可以调用运行一个dos程序。 8.常见函数: poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如 a=[1,0,0;0,2,0;0,0,3],则poly(a)=1 -6 11 -6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。 compan():可以求矩阵的伴随矩阵. sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。 MATLAB编程环境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件编辑器,这是最好的编程环境。 M-文件的扩展名为“.m”。M-文件的格式分为两种: ①λ M-脚本文件,也可称为“命令文件”。 ② M-函数文件。这是matlab程序设计的主流。λ 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构是:顺序结构、选择结构和循环结构。其中顺序结构是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构是由两个程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。 看图可知,在顺序结构中,这两个程序模块是顺序执行的,即先执行<程序

(完整版)matlab基本语句

第2章M ATLAB程序设计 MATLAB语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。 由于 MATLAB开始是用FORTRAN语言编写、后来用 C语言重写的,故其既有FORTRAN的特征,又在许多语言规则方面与C语言相同。 2.1 顺序结构语句 在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。

2.1.1 表达式语句 格式: 表达式,%显示表达式值 表达式;%不显示表达式值 表达式%显示表达式值 如: x + y, sin(x); –5 最后的表达式值暂保存在变量ans中。 2.1.2 赋值语句 格式: v =表达式,%结果送v并显示v v =表达式;%结果送v不显示v v =表达式%结果送v并显示v 2.1.3 空语句 格式: , ; 2.1.4 输入语句

1、input语句(实际上是函数) 格式1: input(提示字符串) 功能: 显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式 格式2: input(提示字符串,'s') 功能: 显示提示字符串,并把输入视为字符串 2、yesinput语句 格式: yesinput(提示字符串,缺省值,值范围) 功能: 显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B并等待用户重新输入。 如: t=yesinput('指定线的颜色',… 'red','red|blue|green') 运行结果如下: 指定线的颜色(red):yellow %不在值内

基于MATLAB的循环码实验报告

课程名称:信息论与编码 课程设计题目:循环码的编码和译码程序设计 指导教师: 系别:专业: 学号:姓名: 合作者 完成时间: 成绩:评阅人: 一、实验目的:

1、通过实验了解循环码的工作原理。 2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理 1、RS 循环码编译码原理与特点 设C 使某线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021Λ,它的循环 移位),,,(1032) 1(---=n n n c c c c C Λ也属于C ,则称该 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个 线性码具有以下的属性,则称为循环码:如果n 元组} ,,,{110-=n c c c c Λ是子空间S 的一个码字,则经过循环移位得到的},,,{201) 1(--=n n c c c c Λ也同样是S 中的一个 码字;或者,一般来说,经过j 次循环移位后得到的},,,,,,,{11011) (---+--=j n n j n j n j c c c c c c c ΛΛ也是 S 中的一个码字。 RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。 码长:12-=m n 信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d 最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1 循环码特点有: 1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。 2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变

MATLAB For 循环

MATLAB For 循环 计算机编程语言和可编程计算器提供许多功能,它允许你根据决策结构控制命令执行流程。如果你以前已经使用过这些功能,对此就会很熟悉。相反,如果不熟悉控制流,本章材料初看起来或许复杂些。如果这样,就慢慢来。 控制流极其重要,因为它使过去的计算影响将来的运算。MATLAB提供三种决策或控制流结构。它们是:For循环,While循环和If-Else-End结构。由于这些结构经常包含大量的MATLAB命令,故经常出现在M文件中,而不是直接加在MATLAB提示符下。 7.1 For循环 For循环允许一组命令以固定的和预定的次数重复。For循环的一般形式是: for x = array {commands} end 在for和end语句之间的{commands}按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。例如, ? for n=1:10 x(n)=sin(n*pi/10); end ? x x = Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000 换句话,第一语句是说:对n等于1到10,求所有语句的值,直至下一个end语句。第一次通过For循环n=1,第二次,n=2,如此继续,直至n=10。在n=10以后,For循环结束,然后求end语句后面的任何命令值,在这种情况下显示所计算的x的元素。 For循环的其它重要方面是: 1. For循环不能用For循环内重新赋值循环变量n来终止。 ? for n=1:10 x(n)=sin(n*pi/10); n=10; end ? x x = Columns 1 through 7

matlab实验 循环结构

实验(四)项目名称:循环结构 一、实验目的: 1. 掌握利用for语句实现循环结构的方法。 2. 掌握利用while语句实现循环结构的方法。 3. 熟悉利用向量运算来代替循环操作的方法。 二、实验原理 1.FOR 循环 在for和end语句之间的{commands}按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。 2.WHILE循环 只要在表达式里的所有元素为真,就执行while和end 语句之间的{commands}。通常,表达式的求值给出一个标量值,但数组值也同样有效。在数组情况下,所得到数组的所有元素必须都为真。 三、实验环境 1.硬件:PC机 2. 软件:Windows操作系统、matlab2015 四、实验内容、步骤以及结果 4.1.1实验要求:用while语句写一个程序,k=5,每循环一次,自动减1,并自 动输出。 4.1.2实验步骤 (1)启动matlab,新建一个M文件; (2)输入程序,如图1; (3)保存文件; (4)编译源程序,观察屏幕上显示的编译信息,修改出现的错误,直到编译成功; 图1:程序输入 4.1.3运行结果如下:

图2:运行结果 4.2.1实验要求:1 、根据,求π 的近似值。当n 分别取100,1000,10000时,结果是多少? 要求:分别用循环结构和向量运算(使用sum 函数)来实现 4.2.2实验步骤: (1)启动matlab ,M 文件; (2)输入程序,如图3和4; (3)保存文件; 4.2.3运行结果如下: 图3:for 循环结构 图4:向量运算

matlab实验4_循环结构程序设计_参考解答

实验四 循环结构程序设计 教材P364 一、实验目的 1. 掌握利用for 语句实现循环结构的方法。 2. 掌握利用while 语句实现循环结构的方法。 3. 熟悉利用向量运算来代替循环操作的方法。 二、实验内容 1. 根据2222π11116123n =++++"2,求的近似值。当n 分别取100、1000、10000时,结果是多少? π要求:分别用循环结构和向量运算(使用sum 函数)来实现。 答:程序设计: (1) 循环结构 clear all; close all; clc; for n=[100,1000,10000] sum=0; for x=1:n sum=sum+1/(x.^2); end value=sqrt(6*sum) end (2) 向量运算 clear all; close all; clc; for n=[100,1000,10000] x=1:n; value=sqrt(6*sum(1./x./x)) end 运行结果: value = 3.1321 value = 3.1406 value = 3.1415 2. 根据11113521 y n =++++?",求: (1) 时的最大n 值。 3y <(2) 与(1)的n 值对应的y 值。 答:程序设计:

clear all; close all; clc; y=0; n=1; while y<3 y=y+1/(2*n-1); n=n+1; end n=n-1; y=y-1/(2*n-1) n=n-1 运行结果: y = 2.9944 n = 56 验证: clear all; close all; clc; n=56; i=1:n; f=1./(2*i-1); y=sum(f) 运行结果: y = 2.9944 3. 考虑以下迭代公式: 1n n a x b x +=+ 其中、b 为正的常数。 a (1) 编写程序求迭代的结果,迭代的终止条件为5110n n x x ?+?≤,迭代初值,迭代次数不超过500次。 0 1.0x =(2) 如果迭代过程收敛于r ,那么r 的准确值是2 b ?±,当的值取、(8、时,分别对迭代结果和准确值进行比较。 (,)a b (1,1),3)(10,0.1)答: (1) 程序设计: clear all; close all; clc; a=2; b=3; x0=1.0; x1=0; n=1; y=abs(x1-x0); while n<=500 & y>10^(-5)

matlab基本语句

matlab 基本语句 1、循环语句for for i=s1:s3:s2 循环语句组 end 解释:首先给i赋值s1;然后,判断i就是否介于s1与s2之间;如果就是,则执行循环语句组,i=i+s3(否则,退出循环、);执行完毕后,继续下一次循环。 例:求1到100的与,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环、 2、循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end 3、if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 end 4、关系表达式: =,>,<,>=,<=,==(精确等于)

5、逻辑表达式:|(或),&(且) 6、[n,m]=size(A)(A为矩阵) 这样可以得到矩阵A的行与列数 n=length(A),可以得到向量A的分量个数;如果就是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。 7、!后面接Dos命令可以调用运行一个dos程序。 8、常见函数: poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如 a=[1,0,0;0,2,0;0,0,3],则poly(a)=1 -6 11 -6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。 compan():可以求矩阵的伴随矩阵、 sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言就是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。 MATLAB编程环境有很多。常用的有: 1、命令窗口 2、word窗口 3、M-文件编辑器,这就是最好的编程环境。 M-文件的扩展名为“、m”。M-文件的格式分为两种: ①l M-脚本文件,也可称为“命令文件”。 ②M-函数文件。这就是matlab程序设计的主流。l 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构就是:顺序结构、选择结构与循环结构。其中顺序结构就是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构就是由两个程序模块串接构成。一个程序模块就是完成一项独立功能的逻辑单元,它可以就是一段程序、一个函数,或者就是一条语句。 瞧图可知,在顺序结构中,这两个程序模块就是顺序执行的,即先执行<程序模块1>,然后执行<程序模块2>。 实现顺序结构的方法非常简单,只需将程序语句顺序排列即可。 2 选择结构 在MATLAB中,选择结构可由两种语句来实现。

Matlab中如何减少循环尽量对矩阵操作

Matlab基础是矩阵运算,它的优势就是矩阵运算的程序简洁、快速。虽然也提供了程序流程的控制语句,如for、while、if、else、switch、try、catch等等,但是应少用,特别是循环语句for、while,费时费事,编写程序时想法尽量避免过多的循环,能有矩阵运算代替是更好的选择,这样编出的程序也简单明了。那么实际编程中应如何减少循环而采用矩阵运算呢?这个问题没有统一的答案,需要结合实际情况,这里举几个例子来说明。 (1)图像的小波阈值降噪 利用二维离散小波变换对图像进行降噪是一种常用的图像降噪手段,其中比较简单典型的方法就是硬阈值法,其基本思想是:对小波分解后的高频系数,一般认为其绝对值比较大的主要反映了信号本身的特征,绝对值比较小的系数反映的多是噪声信息,于是可以事先确定一个阈值,当高频系数的绝对值小于阈值时让其为0,反之则保留。 这里先用循环的方法编写程序,然后再用矩阵操作的方法编写,请大家对比。 load tire; %打开一幅图像 [m n]=size(X); X0=X+randn(m,n).*10; %加噪声 [cA1,cH1,cV1,cD1] = dwt2(X0,'bior3.7'); %小波分解 th=60; %指定一个阈值,可以参考其他资料了解阈值确定方法 [m1 n1]=size(cH1); for i=1:m1 for j=1:n1 if abs(cH1(i,j))<> cH1(i,j)=0; end if abs(cV1(i,j))<> cV1(i,j)=0; end if abs(cD1(i,j))<> cD1(i,j)=0; end end end Xn= idwt2(cA1,cH1,cV1,cD1,'bior3.7'); %小波重构 figure(1); %显示原图像、加噪图像、降噪图像 subplot(131);imshow(X,map); subplot(132);imshow(X0,map); subplot(133);imshow(Xn,map); 如果不用循环,程序如下:

matlab基本语句(可编辑修改word版)

第2章MATLAB 程序设计 MATLAB 语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)。 由于 MATLAB 开始是用 FORTRAN 语言编写、后来用C 语言重写的,故其既有 FORTRAN 的特征,又在许多语言规则方面与 C 语言相同。 2.1顺序结构语句 在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。

2.1.1表达式语句 格式: 表达式,%显示表达式值 表达式;%不显示表达式值 表达式%显示表达式值 如: x+y, s i n(x); –5 最后的表达式值暂保存在变量 ans 中。 2.1.2赋值语句 格式: v=表达式,%结果送 v 并显示 v v=表达式;%结果送 v 不显示 v v=表达式%结果送 v 并显示 v 2.1.3空语句 格式: , ; 2.1.4输入语句 1、i n p u t语句(实际上是函数) 格式 1: i n p u t(提示字符串)

功能: 显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式 格式 2:i n p u t(提示字 符串,'s')功能: 显示提示字符串,并把输入视为字符串 2、y e s i n p u t语句 格式: y e s i n p u t(提示字符串,缺省值,值范围) 功能: 显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B 并等待用户重新输入。 如: t=y e s i n p u t('指定线的颜色',… 'r e d','r e d|b l u e|g r ee n') 运行结果如下: 指定线的颜色(red):yellow %不在值内 指定线的颜色(red):blue %重输 t = b l u e x=y e s i n p u t('输入元素个数',10,[1,20])

三个例子讲解MATLAB三种循环

三个例子讲解MATLAB三种循环 FOR循环 在for和end语句之间的{commands}按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。 如? for n=1:10 x(n)=sin(n*pi/10); end 当有一个等效的数组方法来解给定的问题时,应避免用For循环。例如,上面的例子可被重写为 ? n=1:10; ? x=sin(n*pi/10) 第二种方式执行速度更快。 为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。 WHILE循环 只要在表达式里的所有元素为真,就执行while和end语句之间的{commands}。通常,表达式的求值给出一个标量值,但数组值也同样有效。在数组情况下,所得到数组的所有元素必须都为真。考虑下列例子: ? num=0;EPS=1; ? while (1+EPS)>1 EPS=EPS/2; num=num+1; end ? num num = 53 ? EPS=2*EPS EPS = 2.2204e-016 这个例子表明了计算特殊MATLAB值eps的一种方法,它是一个可加到1,而使结果以有限精度大于1的最小数值。这里我们用大写EPS,因此MATLAB的eps的值不会被覆盖掉。在这个例里,EPS以1开始。只要(1+EPS)>1为真(非零),就一直求While循环内的命令值。由于EPS不断被2除,EPS逐渐变小以致于EPS+1不大于1。(记住,发生这种情况是因为计算机使用固定数的值来表示数。MATLAB用16位,因此,我们只能期望EPS接近10-16。) 在这一点上,(1+EPS)>是假(零),于是While循环结束。最后,EPS与2相乘,因为最后除2使EPS太小。 IF-ELSE-END结构 如果在表达式中的所有元素为真(非零),那么就执行if和end语言之间的{commands}。在表达式包含有几个逻辑子表达式时,即使前一个子表达式决定了表达式的最后逻辑状态,仍要计算所有的子表达式。例如,

MATLAB实验四_循环结构程序设计

实验四 循环结构程序设计 1.根据n 3 212 2 2 2 2 1 1 1 1 6 +?+++= π,求π的近似值。当n 分别取100、1000、10000时,记过是多少? n=100 程序设计: n=100; i=1:n; f=1./i.^2; x=sum(f); y=sqrt(6*x) 运行结果: x = 3.1321 n=1000 程序设计: n=1000; i=1:n; f=1./i.^2; x=sum(f); y=sqrt(6*x) 运行结果: x = 3.1406 n=10000 程序设计: n=1000; i=1:n; f=1./i.^2; x=sum(f); y=sqrt(6*x) 运行结果: x = 3.1415 2.根据y=1+1 -n 21 5131 + ?++,求: (1)y<3时的最大n 值。 (2)与(1)的n 值对应的y 值。 程序设计: y=1;n=1; while(y<3) n=n+2; y=y+1/n; end

y=y-1/n n=(n+1)/2 运行结果: y = 2.9944 n = 57 3. 考虑以下迭代公式: x x n n b a += +1 其中a 、b 为正的常数。 (1)编写程序求迭代的结果,迭代的终止条件为105 1-+≤-x x n n ,迭代初值x 0=1.0,迭代次数不超过500次。 程序设计: x=1.0; a=2; b=3; x=a/(b+x); n=1; while(abs(x-(a/x-b))> 10e-5&n<=500) x=a/(b+x); n=n+1; end x n 运行结果: x = 0.5616 n = 6 (2)如果迭代过程收敛于r ,那 么r 的准确值是 2 42 a b b +± -,当 (a,b )的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果的准确值进行比较。 (a,b )取(1,1) 程序设计: x=1.0; a=1; b=1; x=a/(b+x);

matlab循环优化

Technology Backgrounder Accelerating M ATLAB Background: 3GLs vs. 4GLs and M ATLAB Language Execution Third-generation languages are sometimes referred to as high-level languages because they add a layer of abstraction to hard-to-use lower-level languages,such as assembly and machine code.3GLs are translated into assembly or machine language to execute very quickly.To use 3GLs effectively requires a good deal of programming experience and knowledge. Fourth-generation languages are much less procedural in nature than 3GLs and consist of statements similar to those in human language.For this reason,4GLs are typically much easier to use than 3GLs.However,due to the way that 4GL code is interpreted,execution time is often slower than with 3GLs.M ATLAB is a 4GL that was developed specifically for engineers and sci-entists.While many common functions,such as vector and matrix math,are highly optimized to execute quickly,other operations have incurred the overhead common in 4GLs. M ATLAB Language Execution Before M ATLAB 6.5,the M ATLAB language was processed in two steps.First,the M ATLAB code was converted into a linear stream of p-code,the instruction set that is executed by the M ATLAB interpreter.Second,the interpreter executed each p-code instruction in sequence.Each p-code execution incurred a small amount of overhead.Some p-code instructions were high-level and took much longer to execute than the overhead,so the execution overhead was insignificant.In some cases however,the p-code operation ran very quickly and the interpreter overhead was the majority of the total execution time.The most common examples are codes that deal with scalar values and for loops. M ATLAB Type Handling An important benefit of M A TLAB is that users do not have to declare variables to be of certain data types,as is required with 3GLs.In M A TLAB ,any variable can be assigned a value of any type,and that type can be changed implicitly at will because of an assignment to a new value of a differ-ent type.As a result,the M A TLAB interpreter is prepared to deal with the most complicated data types (such as an n-dimensional array of complex doubles) and is capable of performing operations no matter what the actual data types turn out to be at run-time.Prior to M 6.5,the p-code specified the most complicated case.As a result,code that operated on scalar values incurred additional overhead in execution time and storage. Introduction Most engineers and scientists use two types of computer languages for the analysis, design, and imple-mentation of technical applications: third-generation languages (3GLs), such as C, C++, Fortran, and Basic, and fourth-generation languages (4GLs) such as M ATLAB .While 4GLs offer tremendous ease-of-use and productivity benefits, certain types of code have typically executed more quickly using third-generation languages. The MathWorks has developed technology that combines the ease-of-use of a 4GL wi th the fast performance of a 3GL. The MATLAB JIT-Accelerator, i ntroduced i n MATLAB 6.5,includes several technological innovations that accelerate the execution of MATLAB code. This technol-ogy backgrounder describes M ATLAB language execution, explains how the new JIT-Accelerator speeds up M ATLAB code, and identifies which types of code will see the greatest performance benefit from the JIT-Accelerator. The M ATLAB JIT-Accelerator

相关文档
最新文档