实验目的
1.学习MATLAB中的关系运算和逻辑运算,掌握它们的表达形式和用法。
2.掌握MATLAB中的选择结构和循环结构。
3.学会用MATLAB进行M文件的编写和调用。
一、 预备知识
1.关系和逻辑运算
关系运算符用来完成关系运算,在控制程序流程方面有着极为重要的作用。MATLAB常用的关系符有:<、>、<=小于或等于、>=大于或等于、==等于、~=不等于。
关系运算符可以用来比较两个数值,若所描述的关系成立,则结果为1,表示逻辑真,反之,若所描述的关系不成立,结果为0,表示逻辑假。
MATLAB中的逻辑运算符有&与、∣或、~非。
逻辑运算法则
2.选择结构
if语句和switch语句
if语句的一般形式如下:
if A1 %表达式1
B1 %命令1
else if A2 %表达式2
B2 %命令2
else B3 %命令3
end
switch语句的一般结构如下:
switch a %读入一个语句
case A1 %情况1
B1 %命令1
case A2
B2
case .…
…
other case %其余情况
Bn %最后一个命令
3.循环结构
for语句一般用于循环次数已知的情况,而while语句一般用于循环次数未知的情况。
for语句的格式为:for 变量=表达式
命令1
命令2
…
end
while语句的格式为:while 表达式
命令
end
预备知识
实验内容与步骤
1.创建一个矩阵,用函数all和any作用于该矩阵,比较结果。
创建一个矩阵a=[1,2,0,3;2,0,1,4];
b=all(a),c=any(a),d=all(b),e=any(b)
比较结果b=1 0 0 1
c=1 1 1 1
d=0
e=1
编写一个switch语句,判断输入数的奇偶性。
n=input(‘n=’);
switch mod(n,2);
case 1
A=‘奇’,
case 0
A=‘偶’,
otherwise
A=‘空’,
End
3.编写一个程序画出下列分段函数所表示的曲面,并用M文件存储。
步骤1 打开MATLAB的M文件编辑器file/new/M-file,编写以下内容:
%first.m This is my first example
a=2;b=2;
clf;
x=-a:0.2:a;y=-b:0.2:b;
for i=1:length(y)
for j=1:length(x)
if x(j)+y(i)>1
z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2-1.5*x(j));
else if x(j)+y(i)<=-1
z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(j));
else z(i,j)=0.7575*exp(-y(i)^2-6*x(j)^2);
end
end
end
end
axis([-a,a,-b,b,min(min(z)),max(max(z))]);
colormap(flipud(winter));surf(x,y,z);
步骤2 选择file/save命令,将文件保存,命名为first.m。
步骤3 在command window窗口输入文件名,可看到图形。
二、 练习
1. 编写一程序计算n的阶乘。
2. 编写一个程序求出阶乘大于或等于的最小整数。
三、 实验分析
M文件的编写实际上就是编写一个MATLAB的程序,在编写程序中容易出现很多语法和逻辑错误,比较麻烦。
四、 实验总结
通过本次试验让我们看到了MATLAB也有如同计算机设计语言一般的功能,可以创建函数并调用,语法与c相类似,比较容易理解。
第二篇:用matlab编写M文件
用matlab编写M文件,计算函数值
20##-6-13 12:28
提问者:我ww是xx小jj俊 |悬赏分:10|浏览次数:792次
当x<1时, f(x)=x
当1<x<10时,f(x)=2x
当x> 或=10时,f(x)=3x-11
其他回答共5条
20##-6-13 13:20 yuweilian|四级
n=100;
for x=1:n;
if x<1
f(x)=x;
else if x<10
f(x)=2*x;
else
f(x)=3*x-11;
end
end
plot (x,'b');
0
|评论
20##-6-13 14:35 唐海华86|三级
for x=-5:20;
if x<1
y=x;
end
if <=x<10
y=2*x;
end
if x>10
y=3*x-11;
end
end
plot (x,y,'r');
0
|评论
20##-6-13 14:44 daoxiangcun|五级
%函数文件,保存为f.m
function y = f(x)
n = length(x);
for k=1:n
if x(k)<1
y(k)=x(k);
elseif x(k)>=10
y(k)=3*x(k)-11;
elseif 1<x(k)<10
y(k)=2*x(k);
end
end
%在matlab中执行的命令
x=-20:0.1:20;
y=f(x);
plot(x,y,'-r');
0
|评论
20##-6-13 17:42 化学工程|十四级
不用楼上三位同学的那么复杂:
x=0:0.1:15;
fx=x.*(x<1)+2*x.*(x>=1&x<10)+(3*x-11).*(x>=10)
plot(x,fx)
图形见:
http://hi.baidu.com/chemical%5Fengineering/album/item/cfd2f8dc78cc6e84cc116685.html