首先先来看一下m文件的相关介绍。
一般来说很少直接在控制台输入相关内容,用MATLAB语言编写的程序,称为M文件。
M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。
区别:
命令文件没有输入,没有返回;
命令文件可以对工作空间的变量操作,结果返回工作空间,
而函数文件中的变量为局部变量,函数执行完毕,变量被清除;
命令文件可以直接运行,函数文件见需要调用的形式运行(除了特殊的函数文件之外)。
建立和打开:
可以在控制台输入edit创建,也可以点击NewFile创建新的m文件。
创建新的FunctionFile如下:
function [ output_args ] = Untitled2( input_args )
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
end
如果是函数文件可以在右下角看到函数名,如果是命令文件则显示文件名称。
下面来看一下Matlab的程序控制结构。
1.顺序结构
使用于顺序结构中的输入和输出(命令交互):
- 数据输入(input函数):用于输入数据
>> A = input('请输入内容:')
请输入内容:1
>> A
A =
1
- 数据显示(disp函数):和直接输出相比,没有空格,可以用来输出字符串和变量
>> disp('请叫我汪海')
请叫我汪海
>> disp(A)
1
- 程序暂停(pause函数)
>> pause(1);A = 1;A
A =
1
2.分支结构
- if分支
% 单分支条件
A = input('input A');
if A > 10
disp(A);
end
% 双分支if语句
x = input('x');
if x > 10
y = log(x);
else
y = cos(x);
end
% 多分支if语句
c = input('input a character', 's');
if c >= 'A' & c <= 'Z'
disp(char(abs(c) + abs('a') - abs('A')));
elseif c >= 'a' & c <= 'z'
disp(char(abs(c) - abs('a') + abs('A')));
elseif c >= '0' & c <= '9'
disp(c);
end
- switch分支
% switch分支
price = input('input price');
switch fix(price/100)
case {0, 1}
rate = 0;
case {2, 3, 4}
rate = 0.03;
case {5, 6, 7, 8, 9}
rate = 0.05;
otherwise
rate = 0.1;
end
- try分支
这是一种试探性的分支语句,也就是如果这条语句执行有错误,则不执行,或者执行其他的语句,提高了程序的容错性能。
语法:
try
语句组1
catch
语句组2
end
3.循环结构
循环可以嵌套,但是在MATLAB中,循环的执行效率很低。因此应该尽量避免使用循环,更要避免使用两重以上的循环。
怎样避免使用循环和提高循环效率?
有些可以通过MATLAB的矢量化语言,通过矩阵或者向量操作完成;
有些可以通过MATLAB提供的一些特殊操作工具箱函数完成;
预分配的使用,会大大增加循环效率。
- for循环
% for循环
A = 1:100;
sumA = 0;
for k = 1:100
sumA = sumA + A(k);
end
- while循环
% while循环
while 1
c = input('input a character', 's');
if isempty(abs(c))
break;
end
end