1.1Matlab系统环境
1.命令行窗口
换行命令(续行符) … 回车
clc 清屏;
clear 清除变量
1.2Matlab数值数据
命令;format 格式符(不影响出储存)
常用数学函数:
fix,ceil,round函数
rem取余数
isprime(n)为求素数函数,是素数返回1;否则返回0
find()函数返回的是位置
1.3变量及其操作
区别;预定义变量
变量删除与修改:
who 与 whoms 命令
1.4矩阵及其表示
冒号表达式:
格式: e1:e2:e3(产生向量)
e1为初始值,e2为步长,e3为终止值
步长为1 可以省略
linspace函数
结构矩阵和单元矩阵
(1):结构矩阵
(2)单元矩阵(大括号)
1.5矩阵元素的引用
如果下表越界自动补充为0
这里的序号和一般的c语言数组不太一样,这里是按列来数下标.
利用空矩阵进行矩阵的增删:
例子;
>>A=[1,2,3,0,0;7,0,9,2,6;1,4,-1,1,8]
>>A(:,[2,4])=[] //删除第2,4列的元素
>A =
1 2 3 0 0
7 0 9 2 6
1 4 -1 1 8
A =
1 3 0
7 9 6
1 -1 8
改变矩阵的形状
reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的认为的二维矩阵。
1.6MATLAB的基本运算
(1)基本运算
加减:
两矩阵必须是同样的
乘法运算:
列数等于行数,顺序不能颠倒
除法运算:
B/A=Binv(A)
A/B=inv(A)B(inv 表示逆矩阵)
乘方运算A^2=AA
点运算; .* ./ .\ .^
(这个相当于行列式)
注意区分
A*B(为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵A的列数等于矩阵B的行数)
A.*B(符号数组的乘法,为按参量A与B对应的分量进行相乘。A与B必须为同型阵列,或至少有一个为标量)
A=[1 2 3;4 5 6;7 8 9];B=A;A*B
ans =
30 36 42
66 81 96
102 126 150
>> B/A
ans =
1 0 0
0 1 0
0 0 1 %矩阵这样做是不行的!!!
>> A.*B
ans =
1 4 9
16 25 36
49 64 81
>> B./A
ans =
1 1 1
1 1 1
1 1 1
关系运算符;
当比较的两个数是标量时,按大小比较返回0/1(布尔值);
当两个比较的是矩阵的时候,则将元素一一进行比较,返回与原矩阵同型的矩阵。
当比较的是一个标量与一个矩阵时,也是作一比较。返回矩阵
例如;
>> A=[1,2,3;4,5,6;7,8,9];B=[1,5,6;4,5,3;4,5,3]
B =
1 5 6
4 5 3
4 5 3
>> A=[1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
>> A>=B
ans =
3×3 logical 数组
1 0 0
1 1 1
1 1 1
>> A=7
A =
7
>> A>=B
ans =
3×3 logical 数组
1 1 1
1 1 1
1 1 1
>>
逻辑运算;
& ,|,~
求水仙花数
>> m=100:999;
>> m1=rem(m,10);
>> m2=rem(fix(m/10),10);
>> m3=fix(m/100);
>> k=find(m==m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3);
>> k
k =
54 271 272 308
>> s=m(k)
s =
153 370 371 407
>>
字符串数据:
字符串的表示:
1.取第1~5个字符串组成的子字符串。
2.将字符串倒过来从新排序
3.将字符串中的小写字母变成相应的大写字母,其余字符不变。
4.统计字符串中小写字母的个数
>> ch='agerghh4161';
>> subch=ch(1:5)
subch =
'agerg'
>> revch=ch(end:-1:1)
revch =
'1614hhgrega'
>> k=find(ch>='a'&ch<='z')
k =
1 2 3 4 5 6 7
>> ch(k)=ch(k)-32
ch =
'AGERGHH4161'
>> length(k)
ans =
7
>>