数字图像处理 实验一Word格式.docx
- 文档编号:22399990
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:32
- 大小:200.39KB
数字图像处理 实验一Word格式.docx
《数字图像处理 实验一Word格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理 实验一Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
二、Matlab的帮助使用
Matlab提供的联机帮助系统使用户在没有任何资料的情况下就能掌握它的使用和基本操作,作为Matlab的用户应熟练掌握其联机帮助系统的使用,下面是Matlab联机帮助系统的使用方法。
通过命令窗口中直接输入help命令将会显示当前帮助系统只能怪包含的所有项目
help
三、向量的定义、生成和基本运算
1:
向量的生成
a:
逐个元素直接输入,向量元素需要用“[]”括起来,元素之间可以用空格、逗号或分号分隔。
用空格和逗号分隔生成的行向量用分号分隔生成列向量.
例如:
h=[345678]
f=[3;
4;
5;
6;
7;
8]
b:
利用冒号表达式创建通过设定“步长(step)”生成一维行向量,通过格式为:
x=x0:
step:
xn。
x0表达向量的首元素值,xn表示尾元素数值限,step表示从第二个元素开始,每一个元素与前一个元素的差值。
step=1时,可以省略此项的输入,直接写成x=x0:
例:
y=0:
10:
100
x=0:
c:
定数线性采样生成设定总点数n下,均匀采样生成一维行向量。
通用格式为x=linspace(a,b,n)。
a,b分别是生成向量的第一个和最后一个元素,n是采样总点数。
该指令生成的数组相当于由a:
(a-b)/(n-1):
b生成的数组。
缺省n时,生成100维的行向量。
clear%清除工空间中的所有变量
x=linspace(6,66,8)
y=6:
60/7:
66
z=linspace(6,66)
d:
定数对数采样生成向量设定总点数n下,经“常用对数”均匀采样生成一维行向量。
通用格式为x=logspace(a,b,n)。
生成数组的第一个元素值为10a,最后一个元素值为10b,n为采样总点数,缺省时,生成50维的行向量。
clear%清除工作空间的所有变量
x=logspace(1,8,8)
y=1:
7/7:
8
xx=10.^y
z=logspace(1,8)
2:
向量元素的引用
格式为:
向量名(下标范围或元素所满足的条件)。
clear
rand('
state'
0)%把均匀分布伪随机发生器置为初始状态
x=rand(1,8)%产生(1×
8)的均匀分布随机数组
x(7)%引用数组x的第7个元素
y=x([125])%引用数组x的第一、二、五个元素
z=x(1:
3)%引用数组x的前三个元素
w=x(3:
end)%引用数组x的从第三个元素以后的元素
v=x(3:
-1:
1)%由数组x的前3个元素倒排构成的了数组
u=x(find(x>
0.5))%数组x中大于0.5的元素构成的子数组
t=x([12344321])%重复引用数组
3:
向量与标量、向量与向量的运算
①四则运算符号有(+-*/\.*./.\)
a:
标量a与向量x进行四则运算是a分别与x中的每个元素进行四则运算并生一个与x等长的向量。
例如
x=[4567891011]
y=3*x+3
z=x/2-1
p=4\x
b:
等长的两个向量才能进行四则运算,向量x与y进行四则运算是这两个向量的对应元素分别进行四则运算并生成一个与它们等长的向量。
x=[123456]
y=x*2
z=x+y
w=x.*y
n=x./y
d=x.\y
②幂运算(.^)
a:
向量x与标量a的幂运算是对x的每一个元素施行幂运算,例如
y=x.^3
z=3.^y
向量x与向量y的幂运算是元素对元素的幂运算。
z=x.^y
b=y.^x
③指数运算、对数运算与开方运算等
在MATLAB中,数组的运算实质上是数组内部每个元素的运算,因此,数组的指数运算、对数运算与开方运算等与标量运算完全一样,运算函数分别为“exp”、“log”、“sqrt”等。
x=[35791113]
y=exp(x)
z=log(x)
t=sqrt(x)
四、矩阵的定义、生成和基本运算
1.矩阵的创建
①a:
逐个元素直接输入把矩阵元素需用“[]”括起来,同行元素之间用空格或逗号分隔,行与行之间用分号或回车符分隔矩阵元素可为运算表达式,无任何元素的矩阵称为空矩阵。
x=[123;
456;
789]
y=[1,2,3;
4,5,6;
7,8,9]
k=[sin(pi/7),cos(pi/4)]
T=[]
②编写M文件创建大矩阵对于大型矩阵,可通过编写脚本式M文件,然后运行该文件来创建。
编写一名为Example10.m的M文件,内容如下。
%Example10.m
%编写一M文件创建矩阵的示例文件。
emn=[4563442245636;
0976658645;
2950512436;
143854259178;
45954145245233]
ans=
1/2*k^2-1/2*k
1/2*a^2*x^4+1/2*a*x^2
1/6*pi^2
③通过函数创建特殊矩阵
%Example.m
%编写一M文件,通过函数创建特殊矩阵的示例文件。
%由函数zeros创建全0矩阵。
N=4;
M=3;
A=[12345;
23561;
44425];
B1=zeros(M,N)%生成M×
N阶全0阵。
C1=zeros(size(A))%生成与A同阶的全0阵。
A2=ones(N)%生成N×
N阶全1阵。
B2=ones(M,N)%生成M×
C2=ones(size(A))%生成与A同阶的全1阵。
%由函数eye创建单位矩阵。
A2=eye(N)%生成N×
N阶单位矩阵
C2=eye(size(A))%生成与A同阶单位矩阵。
%由函数rand或randn创建随机矩阵。
A3=rand(N)%生成N×
N阶均匀分布的随机阵,元素值在(0.0,1.0)区间内。
B3=rand(M,N)%生成M×
N阶均匀分布的随机阵。
C3=rand(size(A))%生成与A同阶阶均匀分布的随机阵。
H=hilb(N)%生成N×
N阶Hilbert矩阵。
2.矩阵元素的引用
①相对位置引用格式:
变量名(行标,列标)
②绝对位置引用格式:
变量名(绝对位置索引)
0)
A=rand(5,3)
A(4)%引用距阵A的第四个元素
A(2,3)%引用矩阵A的第二行第三列元素
3.矩阵元素的抽取
①抽取行
A=rand(5,6)
A(4,:
)%抽取矩阵A的第四行
A([23],:
)%抽取矩阵A的第二行和第三行
B=A([33],:
)%抽取矩阵A的第三行和第三行赋值给B
C=A(3:
end,:
)%抽取矩阵A的第三行至最后一行赋值给B
②抽取列
A(:
3)%抽取矩阵A的第三列
[13])%抽取矩阵A的第一列和第三列
B=A(:
[31])%抽取矩阵A的第三列和第一列赋值给B
③抽取块
A=rand(3,4)
B=A([12],[23])%抽取矩阵A的第一、二行与第二、三列交叉的元素赋值给B
④抽取矩阵对角线上的元素
A=rand(6)%产生(6×
6)的均匀分布随机数组
V=diag(A)%抽取矩阵A的主对角线上的元素赋值给向量V
D=diag(V)%以向量V为对角线元素生成对角矩阵
D1=diag(V,2)
D2=diag(V,-2)
U=diag(A,1)%抽取矩阵A的主对角线上方第一条对角线的元素赋值给向量U
L=diag(A,-1)%抽取矩阵A的主对角线下方第一条对角线的元素赋值给向量L
4.矩阵的基本数学运算
①矩阵的四则运算(+-*/\)与线性代数理论一致,其中,A\B=inv(A)*B=A^-1*B。
A=[3230;
21-46]
B=[-13;
41;
60;
79]
C=A+B'
D=A*B
E=B/D
F=D\A
②矩阵与常数间的运算(+-*/\^)同线性代数理论一致,需注注的是,当进行数除时,常数通常只能做除数。
A=[1230;
C=A+2
D=A*2
E=A/2
F=2\A
G=A([12],[12])^2
③矩阵的数组运算(.+.-.*./.\.^)是指同维数组间对应元素之间的加、减、乘、除和幂运算,其中“.+”和“.-”分别与“+”和“-”相同,所以,“.+”和“.-”一般不用。
A=[7280;
51-46]
B=A+2
C=A.*B
D=A./B
E=B.\A
F=A.^2
④矩阵的基本初等运算
21-46;
-1341;
6079]
A(2,:
)=A(2,:
)*2%2乘A的第二行
A(1,:
)=A(1,:
)+A(2,:
)%2乘A的第二行,加到A的第一行
)=A([32],:
)%交换A的第二行和第三行
⑤矩阵的逆运算
B=inv(A)
⑥矩阵的行列式运算
B=det(A)
⑦矩阵的指数运算
B=expm(A)
⑧矩阵的对数运算
A=[4232;
2146;
1341;
6479]
C=logm(B)
D1=logm(A)
D2=log(A)
⑨矩阵的开方运算
A=[9232;
B=A^2
C=sqrtm(B)
B1=sqrtm(A)
B2=sqrt(A)
5.矩阵的一些特殊操作
①变维方法:
“:
”和函数“reshape”。
reshape(A,M,N)%将已知矩阵变维成M×
N阶矩阵
reshape(A,M,N,p,…)%将已知矩阵变维成M×
N×
P×
…阶矩阵
a=1:
12;
A=reshape(a,3,4)
c=zeros(2,6);
c(:
)=a(:
)
②矩阵的变向。
k=3;
dim=1;
A1=rot90(A);
A2=rot90(A,k);
A3=fliplr(A);
A4=flipud(A);
A5=flipdim(A,dim);
②矩阵的扩展与收缩。
B=eye(3,2)
C=ones(2,6)
D=[AB;
C]%利用小矩阵的组合来生成大矩阵
D(6:
10,9:
10)=4%利用对矩阵标识块的赋值命令生成大矩阵
D(:
3:
end)=[]%将矩阵标识块置为空以收缩矩阵
五、多项式的定义、生成和基本运算
1.多项式的表示
对于多项式
用行向量
表示,把多项式问题转化为向量问题。
2.多项式的创建
①直接输入系数向量
由于在MATLAB中的多项式是以向量形式储存的,因此,直接输入多项式对应的向量,MATLAB会自动将向量元素按降幂顺序分配给各项系数值,向量可以为行向量,也可以是列向量。
输入多项式:
p=[1-56-33];
poly2sym(p)
%poly2sym
②通过特征多项式创建
也就是从矩阵求其特征多项式获得。
A=[123;
789]
p=poly(A)
poly2sym(p)
③由多项式的根创建多项式
root=[7-3+6i-3-4i];
p=poly(root)
poly2sym(p)
3.多项式运算
①求多项式的值
一般调用函数polyval进行计算,例如:
p=[11155125];
b=[62;
0-1];
polyval(p,b)
②求多项式的根
求多项式的根可以有两种方法,一种是直接调用函数roots求解多项式的所有根;
另一种是通过建立多项式的伴随矩阵再求其特征值的方法得到多项式的所有根。
两种方法求得的根是相等的。
p=[2-56-19];
roots(p)
P=compan(p)
eig(p)
3.多项式的乘除法运算
多项式的乘法由函数conv来实现,除法则由函数deconv来实现,例如:
d=[3-90-18];
poly2sym(d)
pd=conv(p,d)
poly2sym(pd)
p1=deconv(pd,d)
4.多项式的微分
多项式的微分由函数polyder来实现,例如:
Dp=polyder(p)
poly2sym(Dp)
5.多项式拟合
多项式拟合的实现,一面可以由矩阵的除法求解超定方程来进行;
另一方面可调用函数polyfit来实现,调用方法如下:
[p,s]=polyfit(X,Y,n)
其中,X、Y为拟合数据,n为拟合多项式的次,p为拟合多项式的系数向量,s为拟合多项式系数向量的结构信息,例如:
pi/20:
pi/2;
y=sin(x);
p=polyfit(x,y,5)
x1=0:
pi/30:
pi*2;
y1=sin(x1);
y2=polyval(p,x1);
plot(x1,y1,'
b-'
x1,y2,'
r+'
)
legend('
原曲线'
'
拟合曲线'
axis([07-1.29])
五、Matlab的基本符号运算
1:
符号表达式的生成
⑴用引号来生成符号表达式,例如
f='
exp(x)'
;
a*x^2+b*x+c=0'
Dy-y=x'
⑵用sym来生成符号表达式,例如
f=sym('
);
⑶用函数syms来生成符号函数,例如
symsyu;
p=exp(y/u)
2符号表达式的运算
⑴提取分子、分母,例如
f=sym('
a*x^2/(b-x)'
[n,d]=numden(f)
3符号表达式的基本运算
4符号表达式的高级运算
符号表达式的复合函数运算通过compose来实现;
symsxyt;
f=1/x^3;
g=tan(y);
compose(g,f)
compose(g,f,t)
b:
符号表达式的反函数运算通过函数finverse来实现;
f=sym(1/sin(x));
g=finverse(f)
c:
符号表达式的符号和运算通过函数symsum来实现;
k=sym('
k'
symsum(k)
symsum(k,0,n-1)
symsum(1/k^2,1,inf)
3符号与数值间的转换及符号的可变精度运算
a:
符号表达式转换成数值表达式
p='
1+sqrt
(2)/2'
eval(p)
数值表达式转换成符号表达式;
p=1.7071;
n=sym(p)
n=
17071/10000
4:
符号表达式的简化
见符号表达式类似于数学课本中的形式显示;
symx;
f=taylor(exp(-x)
f=1-x+1/2*x^2-1/6*x^3+1/24*x^4-1/120*x^5
pretty(f)
合并符号表达式中的同类项;
symsxy;
f=sym(x^2*y+y*x-x^2-2*x);
f=collect(f)
f=(y-1)*x^2+(y-2)*x
f=collect(f,y)
f=(x^2+x)*y-x^2-2*x
对符号表达式进行因式分解;
symsx;
f=sym(x^7-1);
f=factor(f)
f=(x-1)*(x^2+x+1)*(x^6+x^3+1)
d:
对符号表达式进行展开;
f=expand((x+1)^3)
f=x^3+3*x+1
s=expand(sin(x+y))
s=sin(x)*cos(y)*sin(y)
e:
对符号表达式进行简化;
symsx;
f=sym((x-1)^3/(x-1));
f=simplify(f)
f=(x-1)^2
simple(f)
5:
符号微积分
符号极限;
limit((sin(x+y)-sin(x))/y,y,0)
符号微分
sym((x-1)^3)
符号积分;
symsualpha;
int(sin(alpha*u),alpha)
6:
符号方程求解
符号代数线性方程求解;
solve('
p*sin(x)=r'
solve('
a*x^2+b*x+c'
a'
)
符号代数非线性方程求解;
六、Matlab中的二维图形绘制和控制
绘制一个正弦函数图象
0.1:
2*pi;
plot(x,y)
在图形中绘制坐标网格
plot(x,y)
gridon
取消坐标中的网格
plot(x,y)
gridon
gridoff
x=0:
z=cos(x);
plot(x,y,x,z)
x=0:
plot(x,y,'
g:
diamond'
x,z,'
b'
axisequal
七、实验总结
通过本次实验,对Matlab有了一定的认识和了解。
快速的熟悉了Matlab环境,掌握Matlab的主要窗口及功能;
学会了Matlab的帮助使用;
由于只是刚刚学习,只是粘贴代码,并不会自己编写代码。
然后学习掌握向量、矩阵的定义、生成方法和基本运算、掌握Matlab的基本符号运算及二维图形的绘制和控制。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像处理 实验一 数字图像 处理 实验