Matlab+实现直接线性变换

Matlab+实现直接线性变换
Matlab+实现直接线性变换

直接线性变换Matlab实现的程序源代码

function re=DLT(A,B)

%imco为像方坐标,输入单位是像素

imco=A; %此处为控制点像方坐标,格式为2×n,单位:像素

%obco为物方坐标,输入单位是毫米

obco=B; %此处为控制点物方坐标,格式为n×3单位:毫米

imco_be=[];B=[];M=[];

for i=1:size(imco,2)

imco_be=[imco_be;imco(:,i)];

end

for i=1:size(imco,2)

A1=[obco(i,:),1,0,0,0,0];

A2=[0,0,0,0,obco(i,:),1];

M=[M;A1;A2];

B1=obco(i,:).*imco_be(2*i-1);

B2=obco(i,:).*imco_be(2*i);

B=[B;B1;B2];

end

M=[M,B];

N=M(1:11,:);

L=N\(-imco_be(1:11,:));

X0=-((L(1)*L(9)+L(2)*L(10)+L(3)*L(11))/(L(9)*L(9)+L(10)*L(10)+L(11)*L(11))); Y0=-((L(5)*L(9)+L(6)*L(10)+L(7)*L(11))/(L(9)*L(9)+L(10)*L(10)+L(11)*L(11))); L=[L;0];M3=[];W=[];

for i=1:size(imco,2)

xyz=obco(i,:);

A=xyz(1)*L(9)+xyz(2)*L(10)+xyz(3)*L(11)+1;

r2=(imco_be(2*i-1)-X0)*(imco_be(2*i-1)-X0)+(imco_be(2*i)-Y0)*(imco_be(2*i)-Y 0);

M1=[A*(imco_be(2*i-1)-X0)*r2;A*(imco_be(2*i)-Y0)*r2];

M2=-[M(2*i-1:2*i,:),M1]/A;

M3=[M3;M2];

W=[W;-[imco_be(2*i-1);imco_be(2*i)]/A];

end

WP=M3'*W;

NBBN=inv(M3'*M3);

LP=-NBBN*WP;

v=M3*LP+W;

imco_be=imco_be+v;

X0=-(LP(1)*LP(9)+LP(2)*LP(10)+LP(3)*LP(11))/(LP(9)*LP(9)+LP(10)*LP(10)+LP (11)*LP(11));

Y0=-(LP(5)*LP(9)+LP(6)*LP(10)+LP(7)*LP(11))/(LP(9)*LP(9)+LP(10)*LP(10)+LP (11)*LP(11));

1

FX=(-X0*X0+(LP(1)*LP(1)+LP(2)*LP(2)+LP(3)*LP(3))/(LP(9)*LP(9)+LP(10)*LP( 10)+LP(11)*LP(11)))^0.5;

V1(1)=FX;

V0(1)=v'*v;

for J=1:1:8%由此控制迭代平差次数

M3=[];

W=[];

for i=1:size(imco,2)

xyz=obco(i,:);

A=xyz(1)*LP(9)+xyz(2)*LP(10)+xyz(3)*LP(11)+1;

r2=(imco_be(2*i-1)-X0)*(imco_be(2*i-1)-X0)+(imco_be(2*i)-Y0)*(imco_be(2*i)-Y 0);

M1=[A*(imco_be(2*i-1)-X0)*r2;A*(imco_be(2*i)-Y0)*r2];

M2=-[M(2*i-1:2*i,:),M1]/A;

M3=[M3;M2];

W=[W;-[imco_be(2*i-1);imco_be(2*i)]/A];

end

WP=M3'*W;

NBBN=inv(M3'*M3);

LP=-NBBN*WP;

v=M3*LP+W;

imco_be=imco_be+v;

X0=-(LP(1)*LP(9)+LP(2)*LP(10)+LP(3)*LP(11))/(LP(9)*LP(9)+LP(10)*LP(10)+LP (11)*LP(11));

Y0=-(LP(5)*LP(9)+LP(6)*LP(10)+LP(7)*LP(11))/(LP(9)*LP(9)+LP(10)*LP(10)+LP (11)*LP(11));

FX=(-X0*X0+(LP(1)*LP(1)+LP(2)*LP(2)+LP(3)*LP(3))/(LP(9)*LP(9)+LP(10)*LP( 10)+LP(11)*LP(11)))^0.5;

V1(J+1,:)=FX;

V2(J,:)=V1(J+1)-V1(J);

V0(J+1,:)=v'*v;

%由此记录每次计算后改正数的大小

end

FX=(-X0*X0+(LP(1)*LP(1)+LP(2)*LP(2)+LP(3)*LP(3))/(LP(9)*LP(9)+LP(10)*LP( 10)+LP(11)*LP(11)))^0.5;

FY=(-Y0*Y0+(LP(5)*LP(5)+LP(6)*LP(6)+LP(7)*LP(7))/(LP(9)*LP(9)+LP(10)*LP( 10)+LP(11)*LP(11)))^0.5;

%F为求得的焦距

format

F=(FX+FY)/2;

F

X0

Y0

LP

双线性变换法设计数字低通滤波器概要

燕山大学 课程设计说明书 题目:双线性变换法设计数字低通滤波器 学院(系):电气工程学院 年级专业:检测 学号: 学生姓名:沫沫 指导教师:王娜 教师职称:讲师

电气工程学院《课程设计》任务书 课程名称:数字信号处理课程设计 说明:1、此表一式四份,系、指导教师、学生各一份,报送院教务科一份。 2、学生那份任务书要求装订到课程设计报告前面。 电气工程学院教务科

目录 第一章绪论 (4) 第二章用双线性变换法设计低通滤波器的主要原理 (5) 2.1 双线性变换法 (5) 2.1.1 双线性变换法的基本原理 (5) 2.1.2 转换关系分析 (6) 2.2 巴特沃斯低通滤波器原理 (9) 第三章用双线性变换法设计低通滤波器步骤 (11) 第四章 MATLAB程序 (11) 第五章程序中命令介绍 (13) 第六章运行结果及波形 (14) 第七章结果分析 (16) 第八章心得体会 (17) 参考文献 (18)

第一章 绪论 数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数 据的处理。时域离散系统的频域特性:)()()(ωωωj j j e H e X e Y =,其中)(ω j e Y 、 )(ωj e X 分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特 性),)(ωj e H 是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响 应。输入序列的频谱)(ωj e X 经过滤波后)()(ω ωj j e H e X ,因此,只要按照输入信号频谱的特点和处理信号的目的, 适当选择)(ωj e H ,使得滤波后的) ()(ω ωj j e H e X 满足设计的要求,这就是数字滤波器的滤波原理。 数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型来实现,其差分方程为: ∑∑==-+-=N i i N i i i n y b i n x a n y 1 )()()( 系统函数为: 计IIR 滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率 响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。 ∑ ∑=-=-+= N k k k M r r r Z a Z b z H 1 01)(

离散序列卷积(matlab实现)

数字信号处理实验报告 实验一 离散时间序列卷积和MATLAB 实现 (一)实验目的:学会用MATLAB 对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性。 (二)实验原理: 1、离散时间序列f1(k)和f2(k)的卷积和定义: f(k)=f1(k)*f2(k)= ∑∞ -∞ =-? i i k f i f )(2)(1 2、在离散信号与系统分析中有两个与卷积和相关的重要结论: a 、f(k)= ∑∞ -∞ =-?i i k i f )()(δ=f(k)* δ(k)即离散序列可分解为一系列 幅度由f(k)决定的单位序列δ(k)及其平移序列之积。 b 、对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状 态响应为y(k),则有:y(k)= ∑ ∞ -∞ =-?i i k h i f )()( 3、上机:conv.m 用来实现两个离散序列的线性卷积。 其调用格式是:y=conv(x,h) 若x 的长度为N ,h 的长度为M ,则y 的长度L=N+M-1。 (三)实验内容 1、题一:令x(n)= { }5,4,3,2,1,h(n)={}246326,,,,,,y(n)=x(n)*h(n),求y(n)。 要求用subplot 和stem 画出x(n),h(n),y(n)与n 的离散序列图形。 源程序: N=5; M=6; L=N+M-1; x=[1,2,3,4,5]; h=[6,2,3,6,4,2]; y=conv(x,h); nx=0:N-1; nh=0:M-1; ny=0:L-1; subplot(131); stem(nx,x,'*k'); xlabel('n'); ylabel('x(n)'); grid on ; subplot(132); stem(nh,h,'*k'); xlabel('n'); ylabel('h(n)'); grid on ; subplot(133); stem(ny,y,'*k'); xlabel('n'); ylabel('y(n)'); grid on ;

数字信号处理期末试卷(含答案)

一、 填空题(每题2分,共10题) 1、 1、 对模拟信号(一维信号,是时间的函数)进行采样后,就是 信号,再 进行幅度量化后就是 信号。 2、 2、 )()]([ω j e X n x FT =,用)(n x 求出)](Re[ω j e X 对应的序列 为 。 3、序列)(n x 的N 点DFT 是)(n x 的Z 变换在 的N 点等间隔采样。 4、)()(5241n R x n R x ==,只有当循环卷积长度L 时,二者的循环卷积等于线性卷积。 5、用来计算N =16点DFT ,直接计算需要_________ 次复乘法,采用基2FFT 算法,需要________ 次复乘法,运算效率为__ _ 。 6、FFT 利用 来减少运算量。 7、数字信号处理的三种基本运算是: 。 8、FIR 滤波器的单位取样响应)(n h 是圆周偶对称的,N=6, 3)3()2(2 )4()1(5.1)5()0(======h h h h h h ,其幅度特性有什么特性? ,相位有何特性? 。 9、数字滤波网络系统函数为 ∑=--= N K k k z a z H 111)(,该网络中共有 条反馈支路。 10、用脉冲响应不变法将)(s H a 转换为)(Z H ,若)(s H a 只有单极点k s ,则系统)(Z H 稳定的条件是 (取s T 1.0=)。 二、 选择题(每题3分,共6题) 1、 1、 )6 3()(π-=n j e n x ,该序列是 。 A.非周期序列 B.周期 6π = N C.周期π6=N D. 周期π2=N 2、 2、 序列 )1()(---=n u a n x n ,则)(Z X 的收敛域为 。 A. a Z < B. a Z ≤ C. a Z > D. a Z ≥ 3、 3、 对)70()(≤≤n n x 和)190()(≤≤n n y 分别作20点DFT ,得)(k X 和)(k Y , 19,1,0),()()(Λ=?=k k Y k X k F ,19,1,0)],([)(Λ==n k F IDFT n f , n 在 范围内时,)(n f 是)(n x 和)(n y 的线性卷积。 A.70≤≤n B.197≤≤n C.1912≤≤n D.190≤≤n 4、 4、 )()(101n R n x =,) ()(72n R n x =,用DFT 计算二者的线性卷积,为使计算量尽可 能的少,应使DFT 的长度N 满足 。 A.16>N B.16=N C.16

浅谈高中数学线性变换的解题技巧

浅谈高中数学线性变换的解题技巧 在新课改之后,要求高中生不仅要学会灵活运用学科基础知识解决问题,还要利用课余时间学习自身兴趣的知识点,使得每个人都能得到全面发展和锻炼。高中线性变换虽然作为选修章节,但是其所蕴含的内容是衔接高中与大学的关键点,掌握线性变换的基础知识也就是提前了解和学习了大学所要接触的高等数学知识模块,即矩阵问题。因此,笔者立足于高中选修的重要知识点——线性变换,先阐述其概念及性质,然后来探究如何巧妙解决高中数学中线性变换的难题,从而为初等数学过渡到高等数学做提前的准备。 标签:数学线性变换解题技巧 一、高中数学线性变换的概述 1.线性变换的概念 线性变换一般是指,在构建的xOy坐标系内,存在至少一个点或多个点的集合A与另一个相对应的至少一个或多个点的集合B两者之间按照一定规则可以相互变换,且不同的点与所转变后的点不相同,即在平面直角坐标系中,把形如进行几何变换,这就叫做线性变换。 2.线性变换的基本性质 线性变换具有三个基本性质,第一个性质是任何向量乘于零都为零,数学表达式为:T(0)=0;第二个性质是任何向量乘于任何一个负向量等于两个向量相乘的负数,数学表达式为:T(-a)=-T(a);第三个性质是线性变换满足乘法交换律、结合律,即,其中A是一般矩阵,是平面直角坐标系内任意的两个向量,是任意实数。 二、高中数学线性变换的解题技巧 1.数形结合 例1:在平面直角坐标系xOy中,已知平面区域A={(x,y)|x + y≤1,且x≥0,y≥0},求平面区域B={(x + y,x - y)|(x,y)∈A}的面積。 解析:本题考察的是线性变换结合不等式的应用难点,解决该问题首先要分析题干信息,根据题目给出的信息列出平面区域A的不等式条件。由于本题平面区域B存在与平面区域A相重合的未知数,因此要假设两个新的未知数替代B的条件,再将新的未知数条件代入A中就能很快确定B的向量表示,最后快速建立平面直角坐标系画出平面区域B的图形就能的出其面积的大小。 设:未知数u=x+y,v=x-y

实验5 双线性插值

实验五图像的空间变换 一、实验目的 1、学习图像空间变换,并通过实验体会空间变换的效果,对其作出分析。 2、掌握利用最邻近插值和双线性插值算法(灰度插值)实现图像的缩放。 3、掌握MATLAB编程环境中基本的图像处理函数。 二、实验要求 1.读入图像,对其利用最邻近插值和双线性插值法进行缩放变换,要求先使用IPT函数进行变换,然后自己编写函数实现; 2.对比上述得到的结果。 三、实验原理 图像的空间变换,也称几何变换或几何运算,包括图像的平移、旋转、镜像变换、转置、缩放等。几何运算可改变图像中各物体之间的空间关系,这种运算可以看成是将各物体在图像内移动。 空间变换可如下表示:设(u,v)为源图像上的点,(x,y)为目标图像上的点,则空间变换就是将源图像上(u,v)处的像素值与目标图像上(x,y)处的像素值对应起来,并具有以下关系: x=X(u,v),y=Y(u,v) (即由(u,v)计算对应(x,y))(1.1) 或u=U(x,y),v=V(x,y) (即由(x,y)计算对应(u,v))(1.2) 其中X(u,v)、Y(u,v)、U(x,y)、V(x,y)均为变换。由(1.1)对应的变换称作向前映射法也叫像素移交法,而由(1.2)对应的变换称作向后映射法也叫像素填充法,向后映射法是向前映射法的逆。 最简单的插值算法是最邻近插值,也称为零阶插值。最邻近插值算法简单,在许多情况

下都能得到令人满意的结果,但是当图像中包含像素之间灰度级有变化的细微结构时,最邻近算法会在图像中产生人为加工的痕迹。双线性插值算法计算量比零阶插值大,但缩放后图像质量高,不会出现像素值不连续的的情况,这样就可以获得一个令人满意的结果。最邻近点插值取插值点的4个邻点中距离最近的邻点灰度值作为该点的灰度值。设插值点(i,j)到周边4个邻点fk(i,j)(k =1,2,3,4)的距离为dk(k =1,2,3,4),则:g(i,j)=fk(i,j),dl =min{d1,d2,d3,d4},l=1,2,3,4 。 双线性插值是利用了需要处理的原始图像像素点周围的四个像素点的相关性,通过双线插值算法计算得出的。对于一个目的坐标,通过后映射法得到其在原始图像的对应的浮点坐标(i+u,j+v),其中i,j均为非负整数,u,v为[0,l]区间的浮点数,则这个像素的值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+l,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:f(i+u,j+v)=(1-u)×(1-v)×f(i,j)+(1-u)×v×f(i,j+1)+u×(1-v)×f(i+l,j)+u×v×f(i+l,j+1),其中f(i,j)表示源图像(i,j)处的的像素值,以此类推,这就是双线性内插值法。 如下图所示,已知(0,0)、(0,1)、(1,0)、(1,1)四点的的灰度,可以由相邻像素的灰度值f(0,0)和f(1,0)在X方向上线性插值求出(x,0)的灰度f(x,0),由另外两个相邻像素f(0,1)和f(1,1)在X方向上线性插值可求出(x,1)的灰度f(x,1),最后由f(x,0),f(x,1)在Y 方向上进行线性插值就可以得到(x,y)的灰度f(x,y)。 四、实验代码

实验五 双线性变换法设计IIR数字滤波器

实验五 IIR 数字滤波器设计 一、实验目的 (1)熟悉用双线性变换法设计IIR 数字滤波器的原理与方法; (2)学会调用MATLAB 信号处理工具箱中滤波器设计函数设计各种IIR 数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR 数字滤波器的MATLAB 实现方法。 (4)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 二、实验原理 设计IIR 数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标; ②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB 信号处理工具箱中的各种IIR 数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter 、cheby1 、cheby2 和ellip 可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计IIR 数字滤波器。 本实验的数字滤波器的MATLAB 实现是指调用MATLAB 信号处理工具箱函数filter 对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n )。 三、实验内容及步骤 (1)调用信号产生函数mstg 产生由三路抑制载波调幅信号相加构成的复合信号st ,该函数还会自动绘图显示st 的时域波形和幅频特性曲线,如图5.1所示。容易看出,图5.1中三路调幅信号的载波频率分别为250Hz 、500Hz 、1000Hz 。 抑制载波单频调幅信号的数学表示式为 0001()cos(2)cos(2)[cos(2())cos(2())]2 c c c s t f t f t f f t f f t ππππ==-++ 其中,cos(2)c f t π称为载波,f c 为载波频率,0cos(2)f t π称为单频调制信号,

循环卷积与线性卷积的matlab实现

循环卷积与线性卷积的实现 1、实验目的:(1)进一步理解并掌握循环卷积与线性卷积的概 念。 (2)理解掌握二者的关系。 三、实验原理 两个序列的N点循环卷积定义为 从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个N 点序列的N点循环卷积的结果仍为N点序列,而他们的线性卷积的结果的长度则为2N-1;循环卷积对序列的移位采取循环移位,而线性卷积对序列采取线性位移。正式这些不同,导致了线性卷积和循环卷积有不同的结果和性质。 循环卷积和线性卷积虽然是不用的概念,但是它们之间有一个有意义的公式联系在一起 其中 也就是说,两个序列的N点循环卷积是他们的线性卷积以N为周期的周期延阔。设序列的长度为,序列的长度为,此时,线性卷积结果的序列的点数为;因此如果循环卷积的点数N小于,那么上述周期性延阔的结果就会产生混叠,从而两种卷积会有不同的结果。而如果N满足的条件,就会有 这就会意味着在时域不会产生混叠。因此,我们得出结论:若通过在序列的末尾填充适当的零值,使得和成为店序列,并作出这两个序列的循环卷积与线性卷积的结果在范围内相同。 根据DFT循环卷积性质中的卷积定理 便可通过两种方法求两个序列的循环卷积:一是直接根据定义计算;二是根据性质先分别求两个序列的N点DFT,并相乘,然后取IDFT以得到循环卷积。第二种方法看起来要经过若干个步骤,但由于求序列的DFT和IDFT都有快速算法,因此它的效率比第一种方法要高得多。 同样,根据线性卷积和循环卷积的关系,可以通过计算循环卷积以求得线性卷积,提高计算序列线性卷积的效率。 4、实验内容 输入程序序列如下: n=[0:1:4];m=[0:1:3]; x1=1+n;x2=4-m; %生成函数x1和x2 L1=length(x1)-1;L2=length(x2)-1; %取函数的长度

DLT 直接线性变换解法程序

DLT 直接线性变换解法程序介绍 一、程序综合介绍:DLT结算程序 程序功能介绍:应用6个已知点计算左右片l 系数;然后应用已经求得的l系数求解物方空间坐标系坐标 程序名:SuYGDLT 程序界面: 程序界面有四个按钮,分别为读取文件,左片l系数计算,右片系数计算,物放坐标解算程序界面有四个编辑框,分别用来输出文件信息,左片l系数、右片l系数、以及无妨坐标结果 截图如下 程序使用介绍: 必须先点击导入文件按钮,导入文件方可进行正确的计算,如果未导入文件就点击左片平差或右片平差或无妨坐标解算就会弹出如下对话框:

读取数据后点击其它按钮进行其它计算。 程序文件格式: 数据文件分为两部分,KnownPoint,UNKnownPoint,分别代表已知点信息和待求点信息当文件读取程序读到“KnownPoint”时开始读取已知点信息,已知点信息格式如下 GCP1,1214.0000,1032.0000,1046.5180,1071.6652,9.201742,-9.672384,-2.726064 分别代表点名、左片相片X坐标、左片相片y坐标、右片相片x坐标、右片相片y坐标物方坐标X、Y、Z; 当文件读取到“END KnownPoint”时结束已知坐标的读取 待求点信息类似:文件格式截图如下: 程序运行结果与评估: 本程序区1-10号点作为已知点计算l近似值11-20号点作为未知点解求其物方三维坐标;

程序运行结果与所给参考值相似,应该可以证明其运算是正确的,运行结果截图如下: 二、程序编程思想及相关代码 程序编程思想及相关函数: 本程序设计DLTCalculation类作为l系数结算主程序,其成员变量及成员函数与作用介绍如下: CSuLMatrix LL;//左片L系数矩阵 CSuLMatrix RL;//右片L系数矩阵 int m_iKnownPointCount;//已知点个数 CControlPoint *m_pKnownPoint;//已知点 int m_iUnKnownPointCount;//未知点个数 CControlPoint *m_pUnKnownPoint;//未知点 public: CString LoadData(const CString& strFileName);//读取文件函数 int ifLoda;//判断是否导入数据 CString Datainfor;//文件信息存储 CString *SplitString(CString str,char split, int& iSubStrs); //分割函数 void LFormApproL(CSuLMatrix &LL);//计算左片L系数近似值 void RFormApproL(CSuLMatrix &RL);//计算右片L系数近似值 void FormLErrorEquations(CSuLMatrix LL,CMatrix &LM,CMatrix &LW);//组成左片系数矩阵和常数项矩阵 void LAdjust();//左片平差主函数 void FormRErrorEquations(CSuLMatrix RL,CMatrix &RM,CMatrix &RW);//组成右片系数矩阵和常数项矩阵 void RAdjust();//右片平差主函数 void Output(const CString& strFileName);//输出结果主程序

第六章_线性变换_68180769

第六章 线性变换 映射:,X Y ≠?≠?,如果有一个法则σ,它使得X 中每个元素α,在Y 中有唯一确定的元素β与之对应,则称σ为X 到Y 的一个映射,记作:X Y σ→,()σαβ=,β称为α在σ下的象,α称为β在σ下的原象。 注:()(),X στασατα=??∈=对。 变换:一个集合到自身的映射。 线性变换的定义与性质 定义 设V 是数域F 上的线性空间,σ是V 的一个变换,如果满足条件: (1)()()()βσασβασV,α,β+=+∈?; (2)()()k F,αV,k αk σασ?∈?∈=, 则称σ是V 上的线性变换或线性算子。 (1), (2)等价于条件:,,,k l F V αβ?∈∈ ()()()σk αl βk σαl σβ+=+。 例:设σ:n n R R →,定义为()c αασ=,c 为常数。-----数乘 变换或位似变换。 c =0-----零变换,记为o 。 c =1-----恒等变换,记为ε。 例:设σ是把平面上的向量绕坐标原点逆时针旋转θ角的变换 设()()(),,,T T x y x y ασα''==,则

cos sin sin cos x x y y x y θθ θθ'=-??'=+? 记cos sin sin cos A θθθ θ-?? =??? ? ,则()A σαα=是一个线性变换。 例:判断下列变换是否是线性变换 (1) ()()12323,,1,,T T a a a a a σ=; (2) ()()12323,,0,,T T a a a a a σ=; (3) ()()12312231,,2,,T T a a a a a a a a σ=-+; (4) ()()212312 3,,,,3T T a a a a a a σ=. 线性变换的基本性质 (1)()θθσ=; (2)()()ασασ-=-; (3)线性变换保持向量的线性组合关系不变,即若s s αk αk αk β+++=Λ2211,则1122s s βk αk αk ασσσσ=+++L ; 若θ=+++s s αk αk αk Λ2211,则θσσσ=+++s s αk αk αk Λ2211。 (4)线性变换将线性相关的向量组映成线性相关的向量组。 线性变换的运算 ()V L ----线性空间V 上所有线性变换的集合。

浅谈线性变换对角化问题

目录 摘要 (1) Abstract (2) 引言 (3) 1 线性变换 (4) 1.1 线性变换的定义 (4) 1.1.1 线性变换的概念 (4) 1.1.2 线性变换的矩阵及矩阵表示 (4) 1.2 矩阵的相似对角化问题 (5) 1.2.1 相似对角化问题 (5) 1.2.2 矩阵的特征值与特征向量 (5) 2 线性变换的对角化 (7) 2.1 线性变换的对角化 (7) 2.1.1 线性对角化的提出 (7) 2.1.2 线性对角化的定义 (7) 2.2 线性变换的特征值与特征向量 (7) 2.2.1 线性变换的特征值与特征向量的概念 (7) 2.2.2 线性变换的特征多项式 (7) 2.3 线性变换对角化与矩阵对角化之间的联系 (8) 2.3.1 特征值与特征向量的联系 (8) 2.3.2 线性变换对角化与矩阵相似对角化之间的关系 (9) 2.3.3 线性变换可对角化的充要条件及推论 (9) 2.3.4 求线性变换对角化的方法和步骤 (10) 3 线性对角化问题的相关题目 (14) 总结 (16) 参考文献 (17) 致谢 (18)

摘要 线性变换是贯穿高等代数的重要内容之一,其研究价值不言而喻。本文尝试通过探讨矩阵对角化的知识点类比线性变换对角化的知识点,再通过矩阵的特征值与特征向量,以线性对角化问题为主要线索,着手研究线性变换特征值与特征向量的求解步骤以及线性对角化的基本条件,并且总结说明线性变换的对角化与矩阵对角化的联系,更进一步的,加深了解矩阵对角化与线性对角化的内容及要点。 关键词:线性变换的对角化问题;矩阵;特征值;特征向量

Linear transformation is an important part of higher algebra through its research value is self-evident. This paper attempts to explore the matrix diagonalization by knowledge points of analog linear transformation diagonalization knowledge, and through the eigenvalues and eigenvectors of the matrix, linear diagonalization problem as the main clue, started studying linear transformations eigenvalues and eigenvectors steps to solve the basic conditions and linear keratosis, and summary description of the linear transformation matrix diagonalization diagonalization with links to further deepen understanding of linear matrix diagonalization diagonalization content and points. Keywords: Changing existing diagonalization;Matrix;Eigenvalues;Eigenvectors

matlab旋转+双线性插值

自己写的Matlab旋转+双线性插值图像函数效果图: 源码: clear all; I = imread('original.jpg');

[Height,Width,RGB] = size(I); II = I;%当角度为0时直接输出 %本程序是以左上角为坐标原点 %angle_j是旋转角度,正值是按顺时针旋转,负值时按逆时针旋转 angle_j = 181; %angle是弧度 angle = 2*pi*angle_j/360; %将angle转成正值 while(angle < 0) angle = 2 * pi + angle; end %约束在0-2π内 while(angle > 2 * pi) angle = angle - 2 * pi; end %tag是判断下面的while循环有没有执行过 tag = 0; while(angle > 0) %超过90度的旋转,都先旋转90度,直到角度在0°-90°之间 %原理是旋转90度整数倍时,信息是不丢失的 if angle >= pi/2 a = pi/2; angle = angle - pi/2; elseif0 < angle < pi/2 a = angle; angle = 0; end if tag == 0 tag = 1; else I = II; [Height,Width,RGB] = size(I);%在旋转后的图像上继续旋转,从而实现大于90° 的旋转 end %正向变换用 sina = sin(a); cosa = cos(a); %逆向变换用_m == _minus sina_m = sin(-a); cosa_m = cos(-a); %旋转后图像的长度和宽度 II_height = round(sina * Width + cosa * Height); II_width = round(sina * Height + cosa * Width); II = ones(II_height,II_width,3); %先转成unit8。或者下面赋值0-1规划一下。否则imshow全是白色。 II = im2uint8(II); %%%%%%%%%%%%%%%%%%%%正向映射%%%%%%%%%%%%%%%%%%%%%%%%

双线性变换法IIR数字滤波器设计

双线性变换法IIR 数字滤波器设计 一、实验目的 1、掌握用双线性变换法设计低通IIR 数字滤波器的基本原理和算法。 2、掌握用双线性变换法设计高通和带通IIR 数字滤波器的基本原理和算法。 3、进一步了解数字滤波器和模拟滤波器的频率响应特性。 二、实验原理与计算方法 1、双线性变换法设计IIR 低通数字滤波器的基本原理和算法 双线性变换法设计数字滤波器,采用了二次映射的方法,就是先将整个s 平面压缩到 s 1平面的一个T j T j π π~-的横形条带范围内,然后再将这个条带映射到z 平面上,就能建 立s 平面到z 平面的一一对应关系。对于低通数字滤波器,映射关系为 z z T z z T s ++-= +-=--11211211 (1) 其中T 为抽样周期。 用双线性变换法设计低通IIR 数字滤波器的基本步骤,首先根据设计要求确定相应的模拟滤波器的传递函数)(s H a ,再应用(1)式得数字滤波器的传递函数)(z H z z T s a s H z H ++-==112)()( (2) 通常可以给定的参数为:低通数字滤波器通带边界频率p p f πΩ21=、阻带边界频率 s s f πΩ21=和对应的通带衰减函数p α、阻带衰减函数s α。s 1平面中的模拟角频率1Ω与数字角频率ω的关系为线性关系T 1Ωω=,在计算模拟滤波器的阶数N 、极点s i 和传递函数)(s H a 之前,应作预畸变处理 2 2tan 22 tan 2 1T f T T T πΩΩ== (3) 模拟滤波器的阶数N 、极点s i 和传递函数)(s H a 的计算方法与冲激响应不变法相同,可以采用Butterworth 逼近或Chebyshev 逼近。 2、双线性变换法设计IIR 高通、带通、带阻数字滤波器的基本原理和算法 由于双线性变换法获得的数字滤波器频率响应特性中不会出现混叠现象,因此可以适用于高通、带通和带阻滤波器的设计。IIR 数字滤波器的设计通常要借助于模拟低通滤波器的设计,由原型低通滤波器到其他形式(高通、带通、带阻)IIR 数字滤波器的频带变换有模拟频带变换法和数字频带变换法。 (1)模拟频带变换法 首先将给定的对数字滤波器(DF)的技术要求转换为一个低通模拟滤波器(AF)的技术要求,根据这种要求用某种逼近设计出原型的低通模拟滤波器(LP AF),计算出模拟滤波器的阶数N 、极点s i 和传递函数)(s H a ,再按照双线性变换的变换关系,将模拟滤波器的传递函数)(s H a 转换为数字滤波器的传递函数)(z H 。 表8-1中列出了将给定的对数字滤波器(DF)的技术要求直接转换为对一个低通模拟滤波器(AF)的技术要求的频率预畸变校正关系和转换公式。

利用MATLAB实现循环卷积.doc

一、实验目的 1.利用MATLAB 实现循环卷积。 2.比较循环卷积与线性卷积的区别。 二、实验条件 PC 机,MATLAB7.0 三、实验内容 1)循环卷积的定义:两个序列的N 点循环卷积定义为: )0()()()]()([1 0N n m n x m h n x n h N k N N <≤-=?∑-= 利用MATLAB 实现两个序列的循环卷积可以分三个步骤完成: (1)初始化:确定循环点数N ,测量输入2个序列的长度。 (2)循环右移函数:将序列x(n)循环右移,一共移N 次(N 为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V 。 (3)相乘:将x(n)移位后组成的矩阵V 与第二个序列h(n)对应相乘,即得循环卷积结果。程序如下: 程序一: clear;close all ; N=10; x1=[6 15 -6 3 5 7 0 1]; x2=[7 1 2 9 4 3 20 6]; xn1=length(x1); xxn1=0:xn1-1; xn2=length(x2); xxn2=0:xn2-1; subplot(3,1,1); stem(xxn1,x1); subplot(3,1,2); stem(xxn2,x2); x11=fft(x1,N);

x12=fft(x2,N); y11=x11.*x12; y1=ifft(y11,N); subplot(3,1,3); n=0:length(y1)-1; stem(n,y1,'.'); title('循环卷积的结果'); xlabel('n');ylabel('y1(n)'); 运行后所得图形如下: 观察所得的循环卷积结果发现并没有呈现周期性的序列,因此将程序做下列改变。程序二: clear;close all; N=40; x1=[6 15 -6 3 5 7 0 1]; x2=[7 1 2 9 4 3 20 6]; x2=[x2,x2,x2,x2]; xn1=length(x1); xxn1=0:xn1-1; xn2=length(x2); xxn2=0:xn2-1; subplot(3,1,1);

Matlab+实现直接线性变换

直接线性变换Matlab实现的程序源代码 function re=DLT(A,B) %imco为像方坐标,输入单位是像素 imco=A; %此处为控制点像方坐标,格式为2×n,单位:像素 %obco为物方坐标,输入单位是毫米 obco=B; %此处为控制点物方坐标,格式为n×3单位:毫米 imco_be=[];B=[];M=[]; for i=1:size(imco,2) imco_be=[imco_be;imco(:,i)]; end for i=1:size(imco,2) A1=[obco(i,:),1,0,0,0,0]; A2=[0,0,0,0,obco(i,:),1]; M=[M;A1;A2]; B1=obco(i,:).*imco_be(2*i-1); B2=obco(i,:).*imco_be(2*i); B=[B;B1;B2]; end M=[M,B]; N=M(1:11,:); L=N\(-imco_be(1:11,:)); X0=-((L(1)*L(9)+L(2)*L(10)+L(3)*L(11))/(L(9)*L(9)+L(10)*L(10)+L(11)*L(11))); Y0=-((L(5)*L(9)+L(6)*L(10)+L(7)*L(11))/(L(9)*L(9)+L(10)*L(10)+L(11)*L(11))); L=[L;0];M3=[];W=[]; for i=1:size(imco,2) xyz=obco(i,:); A=xyz(1)*L(9)+xyz(2)*L(10)+xyz(3)*L(11)+1; r2=(imco_be(2*i-1)-X0)*(imco_be(2*i-1)-X0)+(imco_be(2*i)-Y0)*(imco_be(2*i)-Y 0); M1=[A*(imco_be(2*i-1)-X0)*r2;A*(imco_be(2*i)-Y0)*r2]; M2=-[M(2*i-1:2*i,:),M1]/A; M3=[M3;M2]; W=[W;-[imco_be(2*i-1);imco_be(2*i)]/A]; end WP=M3'*W; NBBN=inv(M3'*M3); LP=-NBBN*WP; v=M3*LP+W; imco_be=imco_be+v; X0=-(LP(1)*LP(9)+LP(2)*LP(10)+LP(3)*LP(11))/(LP(9)*LP(9)+LP(10)*LP(10)+LP (11)*LP(11)); Y0=-(LP(5)*LP(9)+LP(6)*LP(10)+LP(7)*LP(11))/(LP(9)*LP(9)+LP(10)*LP(10)+LP (11)*LP(11)); 1

数字图像处理(Matlab复习代码)

双线性插值法 I_=imread('test.jpg'); I=rgb2gray(I_); A=0.7;B=0.7;%失真像素坐标 [i,j]=size(I); m=round(i*A);n=round(j*B); temp=zeros(m,n);%产生m*n矩阵 G=[A0;0B]; for x=1:m for y=1:n ab=[x,y]/G;%取得x/A,y/B a=ab(1)-floor(ab(1));%权值 b=ab(2)-floor(ab(2)); %防溢出处理 if ab(1)<1 ab(1)=1; end if ab(1)>i ab(1)=i; end if ab(2)<1 ab(2)=1; end if ab(2)>j ab(2)=j; end %定义内插值坐标 ab11=[floor(ab(1))floor(ab(2))]; ab12=[floor(ab(1))ceil(ab(2))]; ab21=[ceil(ab(1))floor(ab(2))]; ab22=[ceil(ab(1))ceil(ab(2))]; temp(x,y)=(1-a)*(1-b)*I(ab11(1),ab11(2))+... a*(1-b)*I(ab12(1),ab12(2))+... (1-a)*b*I(ab21(1),ab21(2))+... a*b*I(ab22(1),ab22(2)); end end imshow(uint8(temp)),title('0.7倍双线性');最近邻法 I_=imread('test.jpg');%读入原始图像 I1=rgb2gray(I_); [i,j]=size(I1); m=round(i*1.5);n=round(j*1.5); m_=round(i*0.7);n_=round(j*0.7); %1.5倍最邻近 TEMP=zeros(m,n);%产生m*n矩阵 for i=1:m for j=1:n TEMP(i,j)=I1(round(i/1.5),round(j/1.5)); end end subplot(1,3,1),imshow(I1),title('原图') TEMP1_5=uint8(TEMP); subplot(1,3,2), imshow(TEMP1_5),title('1.5倍最邻近') 全局预测下的图像分割 I_=imread('test.jpg'); I=rgb2gray(I_); [m,n]=size(I); %统计直方图 zhifangtu=zeros(1,255);% for i=1:1:m for j=1:1:n zhifangtu(I(i,j)+1)= zhifangtu(I(i,j)+1)+1; end end plot(zhifangtu); %阈值处理 final=zeros(m,n); for x=1:1:m for y=1:1:n AA=I(x,y); if AA>120 final(x,y)=255; else final(x,y)=0; end end end imshow(uint8(final));

实验三 用双线性变换法设计IIR数字滤波器

实验_三_题目_用双线性变换法设计IIR数字滤波器第16周星期_3_第6,7节 一.实验目得 (1)熟悉用双线性变换法设计IIR数字滤波器得原理与方法。 (2)掌握数字滤波器得计算机仿真方法。 (3)通过观察对实际心电图信号得滤波作用,获得数字滤波得感性知识。 二、实验内容、方法、设计程序及实验结果 (1)复习有关巴特沃斯模拟滤波器设计与用双线性变换法设计IIR数字滤 波器得内容,用双线性变换法设计数字滤波器系统函数。其中满足本实验 要求得数字滤波器系统函数为: () () ()()()2 1 2 1 2 1 6 1 2155 .0 9044 .0 1 3583 .0 0106 .1 1 7051 .0 2686 .1 1 1 0007378 .0 - - - - - - - + - + - + - + = z z z z z z z z H ???????(3、1) 式中: ?(3、2) 根据设计指标,调用MATLAB信号处理工具箱buttord与butter,也可以得到。由公式(3、1)与(3、2)可见,滤波器由三个二阶滤波器、与级联而成,如图3-1所示。 % x=、 、、 k=1;%控制滤波循环变量 close all; %关闭全部绘图窗口 figure(1);%创建绘图窗口 subplot(2,2,1);%定位子图1 n=0:55; %横坐标 stem(n,x,'、'); %画出枝干图 axis([0,56,-100,50]); %调整坐标 xlabel('n'); %标注横坐标 ylabel('x(n)');%标注纵坐标 title('心电图信号采集序列x(n)');%命名该子图 B=[0、09036,2*0、09036,0、09036];%H1 滤波器得分子系数矩阵 A=[1、2686,-0、7051]; %H1滤波器得分母系数矩阵 A1=[1、0106,-0、3583];%H2滤波器得分母系数矩阵 A2=[0、9044,-0、2155]; %H3滤波器得分母系数矩阵 while(k<=3) y=filter(B,A,x); %进行滤波 图3-1 滤波器得组成

双线性插值

双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。例如已知的红色数据点与待插值得到的绿色点如图1所示: 图1 假如我们想得到未知函数在点的值,假设我们已知函数 在, , , 及四个点的值。首先在 x 方向进行线性插值,得到 然后在 y 方向进行线性插值,得到 这样就得到所要的结果, 如果选择一个坐标系统使得的四个已知点坐标分别为(0, 0)、(0, 1)、(1, 0) 和(1, 1),那么插值公式就可以化简为

或者用矩阵运算表示为 这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值 不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使 图像轮廓在一定程度上变得模糊。 双线性插值法的MATLAB源代码为: I=imread('lena.jpg'); %读入原图像 [nrows,ncols,z]=size(I); %读取图像矩阵大小,方便后面操作 K = str2double(inputdlg('please input scale factor (must between 0.2 - 5.0)', 'INPUT scale factor', 1, {'0.5'})); width = K * nrows; height = K * ncols; J = uint8(zeros(width,height,z)); widthScale = nrows/width; heightScale = ncols/height; for x = 5:width - 5 % 5是为了防止矩阵超出边界溢出 for y = 5:height - 5 for z=1:3 xx = x * widthScale; % xx, yy为原坐标,x,y为新坐标 yy = y * heightScale; if((xx/double(uint16(xx))==1.0)&&(yy/double(uint16(yy))==1.0)) J(x,y,z) = I(int16(xx),int16(yy),z); %若xx,yy为整数,直接赋值 else a = double(uint16(xx)); b = double(uint16(yy)); x11 = double(I(a,b,z)); % x11 <- I(a,b) x12 = double(I(a,b+1,z)); % x12 <- I(a,b+1) x21 = double(I(a+1,b,z)); % x21 <- I(a+1,b) x22 = double(I(a+1,b+1,z));% x22 <- I(a+1,b+1) J(x,y,z) = uint8((b+1-yy)*((xx-a)*x21+(a+1-xx)*x11)+(yy-b)* ((xx-a)*x22+(a+1-xx)*x12)); %用双线性插值计算公式计算 end end end end

相关文档
最新文档