图像处理之MATLAB基础

一、基本语法

1. 定义变量

a = [1,2;3,4] (同行用 空格或逗号连接,不同行用分号连接)

-->a =     1     2

               3     4

b = [1:5]  ( :运算符的语法 起点:步长:终点, ps:这个矩阵包含起止点)--->b  1     2     3     4     5

c = [0:pi/4:pi]

x = [b;c] %由同维度的b和c生成新的矩阵x

y = zeros(1,5)%第一个参数是行,第二个参数是列

z = ones(5,1)%同上

2.读取矩阵中的元素

A =[1:3;4:6;7:9]

A(2,3) --->6

A(2,:)--->4     5     6 %读取第二行

A(:,3)---> 读取第三列

A(1:2;3:4)--->读取矩阵的一部分:第1、2行的第3、4列

A(1,end-2:end-1)%注意这里不能越界 end-i>=1

A([3,1],[3,2])  % 需要明确matlab取元素的顺序,即先取出A的第三、一行,然后截取第三、二列。

3. 删除矩阵中的元素

--整行 整列是基本操作单位,不能删除某特定位置的元素

A(3,:) = [] %第三行置空

A(:,3) = []% 第三列置空

4. 矩阵运算

1)整个矩阵、某行|列、某位置

A = A+10% 所有元素都加10  

A(2,:) = A(2,:) +10 %第二行所有元素都加10

A(2,3) = A(2,3)+10% 第二行第三列元素加10

2) 串行化

A(:) %先列后行,==》注意这个问题,和C里先行后列的存放模式不一样

A(:,:)% 不发生变化

find(A>5)  %默认进行了串行化,输出的结果是串行化后元素的索引

B = A>5    %没有进行串行化,输出的是一个逻辑矩阵

3)改变matrix的shape

reshape(A,m,n)  % 将矩阵按列方向进行重组  ===>由此可见,matlab中元素的存储方式是先列后行。

matlab只是基于A中的元素在内存中重新生成了一个元素,并没有对A本身进行操作。

m*n必须与A中元素个数相一致。

4)获取矩阵的尺寸信息

size(A)==>输出m和n

size(A,1)-->输出m

size(A,2)-->输出n

length(A) = max(size(A))

length(X)  返回vector X的长度

5) 矩阵的加减乘除

C =A + B  C = A-B   C= A*B %这些操作都是代数意义上的矩阵的操作,因此A和B的大小必须满足操作要求,比如乘法A*B,A的列数必须和B的行数相等。

C = A.*B 则表示A和B对应位置的元素相乘

C = A.' 表示A的转置函数

二、结构体struct

1. 定义

var_name = struct(‘key1’,value,'key2',value2);

%注意加上这个关键字,默认“成双成对”,否则报错;keyi 必须是字符串或非空字符向量

var_name.key3 = value3;%向var_name中添加新的键值对

2.引用

var_temp = var_name.key1 %读取某个key对应的value

三、matlab绘图

plot(x,y)

plot3(x,y,z) x= x(t), y = y(t)  z=z(t)

四、matlab编程

1.脚本引用

matlab所有的命令可以编写并存放在.m文件中,以待后期调用,调用方式为:

脚本文件名称   %本人使用的是matlab2018版,调用脚本的时候不用使用Script,且不需要添加脚本文件的后缀.m

2.函数引用

1)函数定义

function  输出参数列表 = 函数名(输入参数列表)

(1)一个函数文件可以包含一个主函数和若干个子函数,

(2)主函数名称必须和文件名字相同,且必须位于文件开头;

(3)子函数放在主函数之后,且子函数被函数文件内部的主函数和其他子函数调用,不可被其他文件调用。

(4)除非变量用关键字global修饰,否则均视为局部变量。

2)函数调用

 变量 = 函数文件名(形参)

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页