当前位置:文档之家› MATLAB编程如何不用for循环

MATLAB编程如何不用for循环

MATLAB编程如何不用for循环
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要看内积在哪一维执行

y=fft(xn,N) %验证

%% 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=k'*n; %看看如何不用for循环来实现,向量的外积N-by-1 multiply 1-by-N

WNnk=WN.^nk; %WNnk就是dftmtx(8),dftmtx原来是这样构造的

Xk=WNnk*xn; % 究竟nk这个向量外径是n'*k还是k'*n要看内积在哪一维执行

y=fft(xn,N) %验证

--------------------------------------------------------------------------------------------

自相关矩阵

做信道矩阵相关时,假设信道频域相关矩阵R_ff,时域相关矩阵为R_tt,Nfft,那么

R_ff=dftmtx(Nfft)*R_tt*dftmtx(Nfft)'

时域相关矩阵R_tt=h*h',t

频域相关矩阵R_ff=H*H'=dftmtx(Nfft)*h*(dftmtx(Nfft)*h)'=dftmtx(Nfft)*h*h'*dftmtx(Nfft)=dftmtx(Nfft)*R_tt*dftmtx(Nff)

均值就是直流分量

方差就是交流功率

自相关在零时刻的值是平均功率

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循环语句

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 循环

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基本语句

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循环 在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基本语句

第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 %不在值内 指定线的颜色(red):blue %重输 t = blue x=yesinput('输入元素个数',10,[1,20])

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

matlab中循环语句用法

matlab中循环语句用法: MATLAB编程一般分三个结构: 顺序结构; 循环结构; 选择结构; 顺序结构: 由程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。 循环结构:for语句 格式: for循环变量=表达式1:表达式2:表达式3 循环体 end 【注】:表达式1:循环变量初值, 表达式2:步长,为1时,可省略; 表达式3:循环变量终值。 或: for循环变量=矩阵表达式 循环体 end 【注】:执行过程是依次将矩阵的各列元素赋给循环变量, 然后执行循环体语句,直至各列元素处理完毕。

格式: while(条件) 循环体 end 【注】:条件成立时,执行循环体 break语句&&continue语句: break:破坏,破坏循环,终止循环的进行,跳出循环,程序将执行循环语句的下一语句。 continue:继续,循环继续,程序将跳过循环体中剩下的语句,继续下一次循环。 选择结构:if-else语句 格式: if表达式 程序模块 end 或 if表达式 程序模块1 else 程序模块2 End

格式: switch表达式 case数值1 程序模块1 case数值2 程序模块2 case数值3 程序模块3 ...... otherwise 程序模块n end 执行过程:首先计算表达式的值, 然后将其结果与每一个case后面的数值依次进行比较, 如果相等,则执行该case的程序模块; 如果都不相等,则执行otherwise模块中的语句。 switch语句可以替代多分支的if语句,而且switch语句简洁明了,可读性更好。

matlab循环语句

循环结构 1.for语句 for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。 for语句更一般的格式为: for 循环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。 2.while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。 3.break语句和continue语句 与循环结构相关的语句还有break语句和continue语句。它们一般与if语句配合使用。 break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。 continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。 求[100,200]之间第一个能被21整除的整数 for n=100:200 if rem(n,21)~=0 continue end break end n 4.循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。 例3-13 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。 for m=1:500 s=0; for k=1:m/2

matlab循环语句

matlab循环语句 循环结构 1(for语句 for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。 for语句更一般的格式为: for 循环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。 2(while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。 3(break语句和continue语句

与循环结构相关的语句还有break语句和continue语句。它们一般与if语句配合使用。 break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。 continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。 求[100,200]之间第一个能被21整除的整数 for n=100:200 if rem(n,21)~=0 continue end break end n 4(循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。 例3-13 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。 for m=1:500 s=0; for k=1:m/2 if rem(m,k)==0 s=s+k;

matlab循环程序

循环实验课题(二) 要求:第二次实验作业所有程序编辑在一个m 文件中,文件名格式:sy2zq20084321(第一部分sy2是实验课题代号,第二部分zq 是名字张强拼音缩写,第三部分20084321是学号),星期一的班在周六前将作业程序的m 文件发至老师邮箱:chxue180@https://www.doczj.com/doc/21771207.html, ,星期四的班在下周三前将作业程序的m 文件发至老师邮箱:chxue180@https://www.doczj.com/doc/21771207.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中matlab中for_循环的原理和应用

应用跟其他编程语言如c一样啊 语法: for i = nBegin:nStep:nEnd %其中默认的不错为1 具体的编程内容 end 看看matlab的帮助吧:-) 最简单的语句for i=初值:增量:终值 循环体 end 一般就是用在需要用到循环的地方,如累加,累乘等运算,还有搜索,这是用的最多的。其实我觉得一个程序肯定不能光有for循环的,但必须承认for循环可以让整个程序变得简单有效。 该文章讲述了Matlab中matlab中for 循环的原理和应用 for 循环是用在须重复执行且执行次数有一定的算式,它的结构如下: for index = array command A end 如果我们要计算一缆车离铁塔的速度(v),它的速度计算方式与且铁塔的距离(d)有关,假设以10 公尺为判断值,则速度计算分为二个算式: 假设有一个阵列d为缆车到铁塔的距离,则以下的for 循环可计算速对应的速度>> for k = 1:length(d) if d(k) <= 10 velocity = 0.425 + 0.00175*d(k)^2; else velocity = 0.625 + 0.12*d - 0.00025*d(k)^2; end fprintf('d= %f velocity= %f\n',d(k),velocity) end 另外几个例子 >> for n=1:10 x(n)=sin(n*pi/10); end >> disp(x) >> for n=1:5 for m=5:-1:1 A(n,m)=n^2+m^2;

end disp(n) end >> disp(A) 但是如果可以用阵列或是矩阵运算来取代以for 循环计算,就应采用前者因为计算速度快多了。上述的例子可改为 >> n=1:10; >> x=sin(n*pi/10); 使用for 循环的规则如下: 1.上述的for 循环中的指标(index) 须为是一变数。 2.如果array 代表阵列是空无一物,则循环不会被执行,例如k=1:0。 3.如果array 代表阵列是一纯量,则循环会被执行一次,例如k=1:1。 4.如果array 代表阵列是一向量,则循环会被依序的执行,例如k=1:b, b=[1 3 5]。 5.如果array 代表阵列是一矩阵,则循环会被逐行依序的执行,例如k=1:B, B=[1 2; 3 4]。 6.for 完整的语法为:for k = first:increment:last,其中的first, increment, last分别 为初始值,增量,终止值。而循环被执行的次数由以下的算式决定: floor((last-first)/increment)+1 如果计算得到的值为负,则循环不被执行。

相关主题
文本预览
相关文档 最新文档