matlab程序设计

1.关系和逻辑运算
关系运算符有以下6 种
<,<=,>,>=,==,~=,
关系成立时结果为1,否则为0。
逻辑运算符有
&,|,~,xor
分别代表逻辑运算中的与、或、非、异或。0 的逻辑量为“假”,而任意非零数的
逻辑量为“真”。

a=[1,2,3,4];
b=[0,1,0,2];
a&b,a|b,~a,xor(a,b)
2.关系和逻辑函数
除了关系和逻辑运算符,Matlab 提供了关系和逻辑函数。
any(x)
如果在向量x 中,至少有一个非零元素,则any(x)返回1;矩阵x 的每一列有
非零元素,返回1。
all(x)
如果在一个向量x 中,所有元素非零,则all(x)返回1;矩阵x 中的每一列所
有元素非零,则返回1。
find:找出向量或矩阵中非零元素的位置标识
find 函数在对数组元素进行查找、替换和修改等操作中占有非常重要的地位,
熟练运用可以方便而灵活地对数组进行操作。
find(a)返回由矩阵a 的所有非零元素的位置标识组成的向量(元素的标识是
按列进行的),如果没有非零元素则会返回空值。

a=[0,1;0,2]
b=zeros(1,5)
find(a),find(b)
[i,j,v]=find(a)
此函数返回矩阵a 的非零元素的行和列的标识,其中i 代表行标而j 代表列标,
同时,将相应的非零元素的值放于列向量v 中。

-302-
a=[0,5;0,7]
[i,j,v]=find(a)
例 找出a 中不等于7 的元素的位置。
a=[0,5;0,7]
find(a~=7)
例 将矩阵a 中等于7 的元素的值换成矩阵c 中相应位置上的元素。
a=[0,5;0,7]
c=rand(2,2)
a(find(a==7))=c(find(a==7))
例 将矩阵a 中等于0 的元素删除。
a=[1,0,5;0,2,7]
a(find(a==0))=[]
b=reshape(a,[2,2])
b(:,2)=[]
3.流程控制语句
计算机程序通常都是从前到后逐条执行的。但往往也需要根据实际情况,中途
改变执行的次序,称为流程控制。Matlab 设有4 种流程控制的语句结构,即if 语
句、while 语句、for 语句和switch 语句。
i)if 语句
根据复杂程度,if 语句有3 种形式
if 表达式 语句组a, end
if 表达式1 语句组a, else 语句组b, end
if 表达式1 语句组a, elseif 表达式2 语句组b,else 语句组c,end
ii)while 语句
while 语句的结构形式为
while 表达式 语句组, end
例 求Matlab 中的一个充分大的实数。
设定一个数x,让它不断增大,直到Matlab 无法表示它的值,只能表示为Inf
为止。
x=rand;
while x~=Inf
x1=x;x=2*x;
end
x1
iii)for 语句
for 语句的结构形式为
for k=初值:增量:终值 语句组a,end
iv)switch 语句
switch-case―otherwise 语句可用来实现均衡的多分支语句,其基本语句结
构可表示为
switch 表达式(标量或字符串)
case 值1
语句组1
case 值2
语句组2
-303-
……
otherwise
语句组n
end
例 判断输入数n 的奇偶性。
n=input('n=')
switch mod(n,2)
case 1,a='奇'
case 0,a='偶'
otherwise,a='非整数'
end
4.M 文件与M 函数
由Matlab 语句构成的程序文件称作M 文件,它将m 作为文件的扩展名。M 文
件可分为程序文件和函数文件两种。
程序文件一般是由用户为解决特定的问题而编制的程序,函数文件也称为子程
序,它必须由Matlab 程序来调用。函数文件往往具有一定的通用性,并且可以进
行递归调用。
i)程序文件
程序文件的格式特征如下:
(1)前面的若干行通常是程序的注释,每行以“%”开始,当然注释可以放
在程序的任何部分。注释可以是汉字,注释是对程序的说明,它增加了程序的可读
性。在执行程序时,Matlab 将不理会“%”后直到行末的全部文字。
(2)然后是程序的主体。如果文件中有全局变量,即子程序和主程序共用的
变量,应在程序的起始部分注明。其语句是
global 变量名1 变量名2 ……
(3)整个程序应按Matlab 标识符的要求起文件名,文件名不能以数字开始,
不允许用汉字。
ii)函数文件
函数文件是用来定义子程序的。它与程序文件的主要区别有3 点:
(1)由function 起头,后跟的函数名要与文件名相同。
(2)有输入输出变量,可进行变量传递。
(3)除非用global 声明,程序中的变量均为局部变量,不保存在工作空间中。
例 编写求阶乘的函数。
function y=fac(n);
if n<0
error('n is smaller than 0,error input.');
return;
end
if n==0|n==1
y=1;
else
y=n*fac(n-1);
end
并把上述文件命名为fac.m,调用函数时实际上是调用文件名。
5.利用字符串模拟运算式
-304-
利用字符串建立表达式后,再用eval 命令执行它,可以使程序设计更加灵活。
但是注意表达式一定要是字符串。其命令格式为:
eval(’字符串’)
例 先定义字符串t 为平方根运算,再用eval 求出1 到10 的平方根。
clear,clc
t='sqrt(i)';
for i=1:10
s(i)={char(['The square root of ', int2str(i), ' is ',...
num2str(eval(t))])};
%上面大括号{}代表建立数组
end
s(:)
例 如果要输入几十个甚至上百个文件,用手工操作十分繁琐,然而灵活运用
eval 函数可以自动完成这一工作。假设数据文件名从data1.dat~data10.dat,放
在D:\matlab\chp 目录下,操作如下:
for i=1:10
eval(['load d:\matlab\chp\data',int2str(i),'.dat'])
end
函数feval 用于执行字符串代表的文件或函数。

fun=['sin';'cos';'log'];
k=input('选择第几个函数:');
x=input('输入数值:');
feval(fun(k,:),x)
例 当前matlab\work 目录下有三个图形文件hlpstep1.gif~hlpstep3.gif,
分别打开这三个文件。
clear,clc
fun='imread';
for i=1:3
str=char(['hlpstep',int2str(i),'.gif']);
x=feval(fun,str)
end
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值