三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加“d”,以示区别。
sin(pi/2) % 1
sind(90) % 1
% 二者等价
abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。
abs(-4) % 4
abs(3+4i) % 5
abs('a') % 97
用于取整的函数有fix、floor、ceil、round。
- round函数按照四舍五入的规则取整。
- ceil函数是向上取整,取大于等于这个数的第一个整数。
- floor函数是向下取整,取小于等于这个数的第一个整数。
- fix函数是固定取靠近0的那个整数,即舍去小数取整。
取模函数 rem(x, 10)
,表示x对10取模;商可以表示为 fix(x/10)
。
求[1, 100]区间的所有素数: MATLAB提供了一个判断n是否素数的函数isprime(n) ,当n是素数时返回1,否则返回0。
x = 1:100; % 步长为1
k = isprime(x); % k为01向量,与x同型
k1 = find(k); % k1存储k中为1的下标
p = x(k1) % 找到k1中保存的下标对应于x中的数值
% 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
变量
预定义变量:预定义变量是由系统本身定义的变量。
- ans是默认赋值变量
- i和j代表虚数单位(注意若设置i为循环变量,则不再表示为复数单位)
- pi代表圆周率
- NaN代表非数(在绘图时若想裁掉一部分,那么只要把要被裁掉部分的数据设置为NaN即可)
内存变量文件:用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。
save命令:创建内存变量文件。
load命令:装入内存变量文件。
save mydata a x % 将变量a和x保存在mydata.mat文件中
load mydata % 将mydata.mat文件中的变量加载到工作区
字符串
str = 'ABCDEFG HIJK';
str(2:4) % 'BCD'
这说明字符串是一个一行多列的矩阵,每个元素是一个字符。
'I''m a student.'
% 'I'm a student.'
% ''表示对‘进行转义
str = ['123', 'abcd'] % 报错,因为第一行与第二行的列数不一致
str = ['123 ', 'abcd'] % 通过在字符串"123"后添加一个空格实现了第一行与第二行列数一致,因此不会报错
建立一个字符串向量,对该向量做如下处理:
1、取第1~5个字符组成的子字符串。
2、将字符串倒过来重新排列。
3、统计字符串中小写字母的个数。
4、将字符串中的小写字母变成相应的大写字母,其余字符不变。
str = 'DC#V&njd2 13N Dsd';
%% 取第1~5个字符组成的子字符串。
str(1:5)
%% 将字符串倒过来重新排列。
reverse(str)
% 或者
str(end:-1:1)
%% 统计字符串中小写字母的个数。
k = find(str>='a' & str= 'W123'
% 1 1 1 0
字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下:
- strcmp(s 1,s2):用来比较字符串sl和s2是否相等,如果相等,返回结果为1,否则返回0。
- strncmp(s 1,s2,n):用来比较两个字符串前n个字符是否相等,如果相等返回1,否则返回0。
- strcmpi(s 1,s2):在忽略字母大小写前提下,比较字符串sl和s2是否相等,如果相等返回1,否则返回0。
- strncmpi(s1,s2,n):在忽略字符串大小写前提下,比较两个字符串前n个字符是否相等,如果相等返回1,否则返回0。
'i’是’ignore‘的意思,即忽略大小写。
字符串的查找与替换findstr(s1, s2):返回短字符串在长字符串中的开始位置。
strrep(s1, s2, s3):将字符串s1中的所有子字符串s2替换为字符串s3。
p = findstr('This is a test!', 'is') % 与 p = findstr('is', 'This is a test!') 等价
k = strrep('aaaaa', 'aaa', 'c')
结果如下:
p =
3 6
k =
'ccc'
主要讲一下替换,替换函数的实现替换的步骤其实是先在第一个字符串中找到与第二个字符串匹配的子串所在的开始位置,取得全部的位置后,再将这些位置替换成第三个字符串,其他位置不变,得到替换后的字符串。
输入与输出 input函数a = input(‘请输入:’):输入合法数字或字符串,不是用单引号引起的均按数字的规则去判断是否合法,用单引号引起来的按字符串规则判断。
str = input(‘请输入字符串:’, ‘s’):不用将输入内容用单引号引起来,输入内容即为字符串内容。
a = input('enter:') % 输入:12
str1 = input('enter str1:') % 输入:'abc'
str2 = input('enter str2:', 's') % 输入:abc
strcmp(str1, str2) % 显示:1
disp函数
disp(str):str可以是单个字符串也可以是字符串的矩阵,矩阵内的元素必须都是字符串。
a = input('enter number:') % 输入:12
str1 = input('enter str1:') % 输入:'abc'
str2 = input('enter str2:', 's') % 输入:abc
strcmp(str1, str2) % 显示:1
disp([str1, num2str(a), str2]) % 输出:abc12abc;不带单引号
补充:在命令行窗口键入ctrl+c可以实现终止程序。
流程控制 if语句当条件结果为标量时,非零表示条件成立,零表示条件不成立。
当条件结果为矩阵时,如果矩阵为非空,且不包含零元素,则条件成立,否则不成立。例如,[1,2;0,4]表示条件时,条件不成立;[1,2;3,4]表示条件时,条件成立。
一般形式:
- if-end
- if-else-end
- if-elseif-end
x = input('x = ');
switch fix(x)
case 2 % 2
disp(111);
case 2 % 永不执行
disp(222);
case {3, 4, 5} % 3或4或5
disp(333);
otherwise
disp(444);
end
111 % x = 2
333 % x = 4
444 % x = 8
for语句
for k = [1 2; 3 4; 5 6]
k
end
for k = [1 2 3]
k
end
第一个for循环执行2次,第二个for循环执行3此。
结果如下:
k =
1
3
5
k =
2
4
6
%% ----------------
k =
1
k =
2
k =
3
说明for循环的每次循环其实遍历的是每一列。
函数文件的定义与调用 函数调用格式:
function [输出形参] = 函数名(输入形参)
注释说明部分
函数体部分
匿名函数
格式:
函数句柄变量 = @(匿名函数形参)匿名函数表达式
或
函数句柄变量 = @函数名 % 函数名可以是内部函数或自定义函数
例如:
%% 格式1
fun = @(x, y) x^2 + y^2;
fun(2, 3) % 13
%% 格式2
fun = @sin % 现在fun函数就是sin函数了
fun(pi/2) % 1
函数参数的可调性
nargin存储着输入实参的个数;
nargout存储着输出实参的个数。
function fout = fun(a, b, c)
if nargin == 1
fout = a;
elseif nargin == 2
fout = a+b;
elseif nargin == 3
fout = (a*b*c)/2;
end
end