一、快捷方式
补全:Tab
多行注释与取消:Ctrl+r注释;Ctrl+t取消注释
自动调整调整缩进格式:Ctrl+i
中断正在执行的操作:Ctrl+c
清除命令窗口中的所有输入和输出信息:clc
清除workspace
在命令窗口输入:clear
清除所有的变量,workspace为空;clear +变量名
:清除指定变量
帮助指令
- help指令
- 直接使用
help
指令,获取当前电脑上MATLAB的分类列表,即当前安装的工具箱名称以及其简要描述 - 使用
help +工具箱名
:获取该工具箱的相关的函数、图形用户工具以及演示文件名等 - 使用
help +函数名
:获得该函数的纯文本的帮助信息(注释区的内容) - helpwin +函数名与 help +函数名获得的帮助信息一样,只是将其在帮助文件浏览器中打开
- 直接使用
doc+指令
:返回链接页,在MATLAB的帮助文档浏览器中调出该函数的文档,比help详细直观which 指令
:定位函数文件的目录位置type +函数名
或者edit +函数名
可以分别在命令窗口中打印出该文件源代码和在文件编辑器中打开该M文件函数源代码,以便查看该函数源文件
二、函数
Matlab中的括号(),[],{}的使用
( )小括号,用于引用数组的元素;[ ] 中括号用来构建向量或者是矩阵;{ }
大括号,用于cell型的数组的分配或引用
eye(n)函数
生成n*n的方阵,对角线上的元素为1,其他都为0
输出语句
disp()函数直接将内容输出在Matlab命令窗口中:
1.输出字符串:
>>disp('hello word!')
hello word!
2.输出矩阵:
>> A=(1:5);
>> disp(A)
1 2 3 4 5
3.同时输出字符串和数字:
>> disp(['hello word =',num2str(A)])
hello word =1 2 3 4 5
spfun() 求非零元素的函数值输出稀疏矩阵
>> A=[1,0,2,0];B=spfun(@exp, A)
B =
(1,1) 2.7183
(1,3) 7.3891
tic,toc时间函数的使用
tic函数会记录起始时刻,toc函数会自动计算时间差
tic %记录开始时间
for k=1:100
s=sum(k);
end
toc%记录结束时间
三、矩阵数组数值计算
求和几种方式size(),sum(),length(),numel()
1.size:获取数组的行数和列数
s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量
2.sum()
sum(A,dim),若A为行向量时,如果不指定dim或指定dim为1,则对列向量求和,计算结果为一个行向量,指定dim为2,则自动计算成所有行向量数值的和
>> B=sum([1,2;2,4;3,6]);
>> B
B =
6 12
>> B=sum([1,2;2,4;3,6],2);
>> B
B =
3
6
9
3.length:数组长度(即行数或列数中的较大值)
n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。n=max(size(A):若A为非空数组,返回A的最大维数;若A为空数组,返回A中最长的非0维数
>> B=length([1,2;2,4;3,6]);
>> B
B =
3
4.numel:元素总数
n=numel(A)该语句返回数组中元素的总数
>> B=numel([1,2;2,4;3,6]);
>> B
B =
6
四、文件操作
五、矩阵变换
dist()函数
计算样本集中多个样本两两之间的距离矩阵,dist(pos)输入一个参数,pos——N×S的神经元位置矩阵,返回S×S的距离矩阵,A=[1,2;2,3;3,5;4,2];A1=A’,B=dist(A1),注意要先对A进行转置
B=
0 1.4142 3.6056 3.0000
1.4142 0 2.2361 2.2361
3.6056 2.2361 0 3.1623
3.0000 2.2361 3.1623 0
remat()函数
B = repmat(A,m,n)
B = repmat(A,[m n])
B = repmat(A,[m n p…])
矩阵复制函数,把矩阵A看作一个整体元素,重新生成MxN的矩阵B:A = repmat(1:4, 3, 1),向量[1,2,3,4]作为一个变量生成一个3行一列的矩阵
A =
1 2 3 4
1 2 3 4
1 2 3 4
reshape()函数
B=reshape(A,[m,n])
矩阵重排函数,先把矩阵A按列排列,对这个向量每隔m间隔取一个元素,重新生成一个大小为m*n的B向量:A =[1:6;7:12],按列排成[1,7,2,8,3,9,4,10,5,11,6,12],每隔3个数取值形成4个值一行的向量
A =
1 2 3 4 5 6
7 8 9 10 11 12
B = reshape(A,[3,4])
1 8 4 11
7 3 10 6
2 9 5 12
sparse()函数和full()函数
创建稀疏矩阵函数
用法1:B=sparse(A):将矩阵A转化为稀疏矩阵的形式,即矩阵A中任何零元素去除,非零元素及其下标(索引)组成矩阵B
A=
0 2 0
4 0 6
7 0 0
B=sparse(A)=
(2,1) 4
(3,1) 7
(1,2) 2
(2,3) 6
用法2:S = sparse(i,j,s,m,n,nzmax)——由i,j,s三个向量创建一个m*n的稀疏矩阵(上面的B矩阵形式),并且最多含有nzmax个元素
B=sparse([1,2,3],[1,2,3],[0,1,2],4,4,4)
B =
(2,2) 1
(3,3) 2
Z =full(B)
0 0 0 0
0 1 0 0
0 0 2 0
0 0 0 0
其中i=[1,2,3],稀疏矩阵的行位置;j=[1,2,3],稀疏矩阵的列位置;小s=[0,1,2],稀疏矩阵元素值, 其位置为一一对应m=4(>=max(i)),n=4(>=max(j)) (注:m和n的值可以在满足条件的范围内任意选取),用于限定稀疏的大小。nzmax=4(>=max(i or j)),稀疏矩阵最多可以有nzmax个元素。一些简写的情况: S = sparse(i,j,s,m,n)——nzmax = length(S) ; S = sparse(i,j,s)——使m = max(i) 和 n = max(j),在S中零元素被移除前计算最大值,[i j s]中其中一行可能为[m n 0];full函数把稀疏矩阵转为全矩阵
diag()函数
矩阵对角元素的提取和创建对角阵。
v为向量则创建对角阵:设以下X为方阵,v为向量
X = diag(v,k),当v是一个含有n个元素的向量时,返回一个n+abs(k)阶方阵X,向量v在矩阵X中的第k个对角线上,
k=0表示主对角线
k>0表示在主对角线上方
k<0表示在主对角线下方
>> v=[1 2 3];
diag(v, 2)
ans =
0 0 1 0 0
0 0 0 2 0
0 0 0 0 3
0 0 0 0 0
0 0 0 0 0
X为矩阵则提取对角元素:v = diag(X,k)返回列向量v,v由矩阵X的第k个对角线上的元素形成
spdiags()函数
B = spdiags(A)从m- n矩阵中提取所有非零对角线A。B是一min(m,n)列p矩阵,其列是p非零对角线A。
[B,d] = spdiags(A)第一个输出的列B包含非零对角线A。第二个输出d列出了非零对角线的索引A
B = spdiags(A,d)提取指定的对角线d
A = spdiags(B,d,A)替换由d列指定的对角线B,输出稀疏矩阵
A = spdiags(B,d,m,n)创建一个m-by- n通过取的列的稀疏矩阵B和将它们沿着由指定的对角线d
%S对角线上的值取0
n = size(S, 1);
B = full(spdiags(diag(S), 0, n, n));
S = S - B;
六、图像绘制
title,坐标轴设置
title('a','FontName','Times New Roman','FontWeight','Bold','FontSize',16) %设置标题
xlabel('T','FontName','Times New Roman','FontSize',14)%设置x轴
ylabel('a','FontName','Times New Roman','FontSize',14,'Rotation',0) %设置y轴
axis([xmin xmax ymin ymax])%设置坐标轴在指定的区间
set(gca, ‟XTick‟, [0 1 2]) %X坐标轴刻度数据点位置
set(gca,'XTickLabel',{'a','b','c'})% X坐标轴刻度处显示的字符
直方图统计imhist()
imhist( i );直接显示图像i的灰度直方图;
imhist(i,n)n为指定灰度级显示直方图;
[count, x] = imhist( i ) 获取直方图信息,count为每一级灰度像素个数,x为灰度级
七、图像处理
L = bwlabel(A,n)
返回一个和A大小相同的L矩阵,包含了标记了A中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。
8连通:一个像素如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;4连通:如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连通的,在左上角、左下角、右上角或右下角连接,则不认为他们连通
用途:图像分割提取分割区域