实验二Strassen矩阵乘法

实验二Strassen矩阵乘法
实验二Strassen矩阵乘法

实验2 Strassen矩阵乘法

一、 实验目的

1.理解Strassen矩阵乘法的分治思想

Strassen矩阵乘法的分治法设计模式是:半分+混合

2.改进Strassen矩阵乘法对内存的需求

若按Strassen矩阵乘法的直接表述实现,则空间复杂度将是O(3n2),本实验将试图改进这个方面。

3.Strassen矩阵乘法的性能问题

改进Strassen矩阵乘法的内存需求,并不一定能改进Strassen矩阵乘法的效率,本实验将试图测试一些较大规模(n>=1024)的n阶方阵的Strassen矩阵乘,探讨其效率问题。

二、 实验环境

C/C++编程环境或任何编程语言环境

三、 实验内容

1. Strassen矩阵乘法描述

尽管Strassen矩阵乘法的实用价值在当今的多核计算环境下可能不是那么显著,但其理论价值仍值得我们研究。Strassen矩阵乘法体现了一类重要的分治算法设计模式,即半分+混合,同样具有这种算法设计模式的是FFT(Fast Fourier Transform)-“由于FFT这个卓越算法在实践上的重要意义,有些人把它看作是有史以来人们发明的最重要的算法之一。”[1]

Strassen 矩阵乘法的基本思想,可由下述矩阵乘法概括:

输入:两个n=2k 维方阵A 和B (若A 和B 的维度不是2k ,则通过增加元素为0的行和列,以使A 和B 均为2k 维的方阵)

输出:n 维方阵

C

(1)

1+41+443-11+24134.12-43+4113.123-11+224.3424.1314.11.2412.4-434

4+=A B =A B =A B =A B =A B M =A B M =A M M B M M M

(2)

为方便表示,这里采用与书本不同的下标表示法,如对于1个n/2维矩阵

14.14M ,下标14.14表示其由两个矩阵A 1+4和B 1+4乘积而成,A 1+4表示A1+A4,

同理B 1+4表示B1+B4,同理12.4M 表示A1+2与B4的乘积。采用这种表示法,目的是为了记住每个M 矩阵是由A 和B 的哪一个或两个子矩阵得到的,从而方便后面的内存分配设计。

1)第一步:半分(半分指维度,若指面积也许应叫1/4分)

将A 和B 两个n 维方阵各分解为4份,每份n/2维,即A1,A2,A3,A4和B1,B2,B3,B4。

2)第二步:混合

将维度为n/2的7个子矩阵的“混合”(加减运算混合法),存入维度为n 的结果矩阵C 的4个位置中,即C 的4个n/2维的子矩阵依次是:

= 4.13124.14.1444312.M C -+M M M + 1.24142 2.M M C =+ 34.1433.1M M C =+

(3)

1.24413.14..14112

34M C =-+M M M +公式(3)右侧的加减法似乎没有规律(实际上有,见[2])。这7个n/2维M 方阵中的每一个等于两个n/2维的子方阵的乘积,如

14.141+41+4=A B M

(4)

表示n/2维的方阵14.14M 等于n/2维的1+4A 和1+4B 的乘积。 3)第三步:递归半分

对于像公式(4)右侧的两个n/2维方阵的乘法问题,我们可以再次调用公式(1)和(2):将A 1+4看成公式(1)中的A ,B 1+4看成公式(1)中的B 。

因此,原始规模为n 的矩阵乘法问题,被分解为规模为n/2的7个子问题(n/2维的矩阵乘法问题),这7个子问题中的每一个又可分解为7个子子问题(n/4维的矩阵乘法问题),…,直到叶问题(1维的两个矩阵乘法=两个元素乘法)。

2. Strassen 矩阵乘法算法框架

上述描述仍有尚未确定的地方,如内存如何分配,变量如何传递,还有我们无法准确地度量其空间效率(乘法时间效率约为n 2.807[1],这是Strassen 矩阵乘法比传统矩阵乘法n 3好的理论依据,但实验结果是否真的如此,需要你来验证)。因此,初步用以下程序框架S1描述Strassen 矩阵乘法(注:本文所有代码均为伪代码,不可编译):

class Matrix { //定义一个矩阵结构 public:

int* p; //方阵第1个元素地址 Matrix(int dim) { p = new int[dim*dim]; //采用行存储

}

~Matrix() { delete[] p; } };

void testS () { //测试主程序 Matrix A(1024); //输入A ,B Matrix B(1024);

/*设置矩阵A,B 中的元素为随机数*/

Matrix C(1024); //分配存放结果的矩阵C 的内存 S1(A,B,C); }

// Strassen 矩阵乘法

void S1(const Matrix& A, const Matrix& B, Matrix& C, int dim ) { if(dim==1) { *C.p = *(A.p) * *(B.p); return; } //[J]

Matrix left(dim/2); Matrix right(dim/2) //[N1] 分配两个临时n/2维矩阵存放公式(2)中右侧的A 和B 的子矩阵,如14.141+41+4=A B M 中的1+4A 和1+4B :

left ;←1A /* [C1] 取出A1子矩阵并放入left */ 4left ;+=A /* 将1A 与4A 的和存入left */ /* 同理将1+4B 存入right */

Matrix 14.14M (dim/2); // [N2] 存放1+4A 与1+4B 的乘积 S1(left, right, 14.14M , dim/2); //递归调用,得到14.14M /* 同理得到 4.13M ,12.4M , 1.24M ,34.1M ,13.12M ,24.34M */

← 4.13124.14.1444312.M C -+M M M + // [N3] 执行加法,将结果存入C 的第1子矩阵

/* 同理按公式(3)计算C 2,C 3,C 4 */ }

从程序S1可知:每一递归层k ∈[()1log 2?n ..0],需分配7*(2k )2+2*(2k )2=9*4k ,如果不算最外层的A,B,C 分配的内存,那么总共分配的内存是[3]:

()

134921log 0

2?=×∑?=n n k k

(5)

3. Questions [Question1]

程序S1是可以进一步优化的,[N1~N3]处的内存分配可以不需要,因为在

n 2log 次递归中,每次递减地分配和释放内存是不仅导致内存碎片,而且影响性

能,应该一次性地分配好,但问题是应该一次性地分配多少额外内存才合适呢?(除去预先分配A,B,C 的n 维方阵内存以外),进一步地讲,最少需分配多少额外内存呢?还是根本不用额外分配内存? [Question2]

请实现你认为的最小内存分配的Strassen 算法S ,并用蛮力法(传统矩阵乘法)验证S 的计算结果。 [Question3]

请给出Question2中S 的性能度量,以Excel 表形式展现,表头为: n 维 Strassen 时间T n 2.807 T/ n 2.807 传统乘法时间S

n 3 S/ n 3

你能得到什么结论? [Question4]

试问,Strassen 算法能超越传统矩阵乘法吗?

1)若能,请给出在何种维度的情况下,Strassen 算法为优。

2)若不能,请努力改进程序S ,以使S 在维度>=N 的情况下,Strassen 算法为优。可能的改进包括:扩大内存分配、连续内存读写,最小化内存工作区,尽量用指针,内存copy 。

3)若还不能,请修改程序S ,使S 在某种维度K 以下,将矩阵乘法改为传统矩阵乘法。(即程序S 也不一定非要到[J]处才使用数量乘,可以在某个维度下(如子矩阵维度在10~100维时,使用传统矩阵乘法)。这个K 是多少呢?

四、参考文献

[1] Anany Levitin. Introduction to the Design and Analysis of Algorithms. 2e, Pearson Education. 2007. Chinese version. pp.176

[2] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford. Introduction to Algorithms, 2e, MIT Press ,2001: 28.2 Strassen's algorithm for matrix multiplication

[3] David H. Bailey, King Lee and Horst D. Simon. Using Strassen's Algorithm to Accelerate the Solution of Linear Systems.The Journal of Supercomputing, 4, pp.357-371.1990

五、提交要求

1.提交电子版实验报告。

实验报告写作要求:

――实验报告样式可从http://192.168.2.3/guide.aspx 表格下载-学生适用-在校生管理-实践教学-实验:深圳大学学生实验报告)

――源代码作为实验报告附件上传。

――实验报告正文不要帖源代码+实验指南,而是要介绍自己做的工作,包括程序是如何设计的,算法是什么,输出结果的详细解释与分析。

――实验结论只需谈“实验过程中发现了何问题,是否解决,以及解决思路是什么”,除此以外,请不要写其它内容在实验结论中。

2.本实验完成人数1~2人。

5模拟乘法混频

模拟乘法混频 一、实验目的 1. 进一步了解集成混频器的工作原理 2. 了解混频器中的寄生干扰 二、实验原理及实验电路说明 混频器的功能是将载波为vs (高频)的已调波信号不失真地变换为另一载频(固定中频)的已调波信号,而保持原调制规律不变。例如在调幅广播接收机中,混频器将中心频率为535~1605KHz 的已调波信号变换为中心频率为465KHz 的中频已调波信号。此外,混频器还广泛用于需要进行频率变换的电子系统及仪器中,如频率合成器、外差频率计等。 混频器的电路模型如图1所示。 图1 混频器电路模型 混频器常用的非线性器件有二极管、三极管、场效应管和乘法器。本振用于产生一个等幅的高频信号VL ,并与输入信号 VS 经混频器后所产生的差频信号经带通滤波器滤出。目前,高质量的通信接收机广泛采用二极管环形混频器和由双差分对管平衡调制器构成的混频器,而在一般接收机(例如广播收音机)中,为了简化电路,还是采用简单的三极管混频器。本实验采用集成模拟相乘器作混频电路实验。 图2为模拟乘法器混频电路,该电路由集成模拟乘法器MC1496完成。 V s V

+12 -12 J7J8 J9 C12104 C11104 C7104 C15104 C8104 R101K R11200 R12820 R13820 R71K R14100 R153.3K R163.3K R216.8K R20510 R171k F24.5M D28.2V C16104 TH6 TH7 TH8 TH9 TP5 SIG+ 1 G N A D J 2 G N A D J 3 SIG- 4 B I A S 5 OUT+6NC 7CAR+8 NC 9CAR- 10 NC 11OUT-12 NC 13V E E 14 U1 MC1496 图2 MC1496构成的混频电路 MC1496可以采用单电源供电,也可采用双电源供电。本实验电路中采用+12V ,-8V 供电。R12(820Ω)、R13(820Ω)组成平衡电路,F2为4.5MHz 选频回路。本实验中输入信号频率为 fs =4.2MHz ,本振频率fL =8.7MHz 。 为了实现混频功能,混频器件必须工作在非线性状态,而作用在混频器上的除了输入信号电压VS 和本振电压VL 外,不可避免地还存在干扰和噪声。它们之间任意两者都有可能产生组合频率,这些组合信号频率如果等于或接近中频,将与输入信号一起通过中频放大器、解调器,对输出级产生干涉,影响输入信号的接收。干扰是由于混频器不满足线性时变工作条件而形成的,因此干扰不可避免,其中影响最大的是中频干扰和镜象干扰。 三、 实验仪器与设备 高频电子线路综合实验箱; 高频信号发生器; 双踪示波器; 频率计。 四、实验步骤 1. 打开本实验单元的电源开关,观察对应的发光二极管是否点亮,熟悉电路各部分元件的作用。 2、用实验箱的信号源做本振信号,将频率L f =8.7MHz (幅度V LP-P =300mV

矩阵分析实验报告

矩 阵 分 析 实 验 报 告 学院:电气学院 专业:控制工程 姓名:XXXXXXXX 学号:211208010001

矩阵分析实验报告 实验题目 利用幂法求矩阵的谱半径 实验目的与要求 1、 熟悉matlab 矩阵实验室的功能和作用; 2、 利用幂法求矩阵的谱半径; 3、 会用matlab 对矩阵分析运算。 实验原理 理念 谱半径定义:设n n A C ?∈,1λ,2λ,3λ, ,j λ, n λ是A 的n 个特征值,称 ()max ||j j A ρλ= 为关于A 的谱半径。 关于矩阵的谱半径有如下结论: 设n n A C ?∈,则 (1)[]()()k k A A ρρ=; (2)2 2()()()H H A A AA A ρρ==。 由于谱半径就是矩阵的主特征值,所以实验换为求矩阵的主特征值。 算法介绍 定义:如果1λ是矩阵A 的特征值,并且其绝对值比A 的任何其他特征值的绝对值大,则称它为主特征值。相应于主特征值的特征向量1V 称为主特征向量。 定义:如果特征向量中最大值的绝对值等于单位值(例如最大绝对值为1),则称其为是归一化的。

通过形成新的向量' 12=c n V (1/)[v v v ],其中c=v 且1max {},j i n i ≤≤=v v 可将特 征向量 '12n [v v v ]进行归一化。 设矩阵A 有一主特征值λ,而且对应于λ有唯一的归一化特征向量V 。通过下面这个称为幂法(power method )的迭代过程可求出特征对λ,V ,从下列向量开始: []' 0=111X (1) 用下面递归公式递归地生成序列{}k X : k k Y AX = k+11 1 k k X Y c += (2) 其中1k c +是k Y 绝对值最大的分量。序列{}k X 和{}k c 将分别收敛到V 和λ: 1lim k X V =和lim k c λ= (3) 注:如果0X 是一个特征向量且0X V ≠,则必须选择其他的初始向量。 幂法定理:设n ×n 矩阵A 有n 个不同的特征值λ1,λ2,···,,λn ,而且它们按绝对 值大小排列,即: 123n λλλλ≥≥≥???≥ (4) 如果选择适当的X 0,则通过下列递推公式可生成序列{[() ()( ) ]}12k k k k n X x x x '=???和 {}k c : k k Y AX = (5) 和: 11 1k k k X Y c ++= (6) 其中: () 1k k j c x +=且{} ()()1max k k j i i n x x ≤≤= (7) 这两个序列分别收敛到特征向量V 1和特征值λ1。即: 1lim k k X V →∞ =和1lim k k c λ→∞ = (8) 算法收敛性证明 证明:由于A 有n 个特征值,所以有对应的特征向量V j ,j=1,2,···n 。而且它们是

模拟乘法器MC1496 1596设计混频电路

班级: 姓名: 学号: 指导教师:林森 成绩: 电子与信息工程学院 信息与通信工程系

混频器的设计 1概述 在高频电子线路中,振幅调制、同步检波、混频、倍频、鉴频等调制与解调的过程均可视为两个信号相乘的过程,而集成模拟乘法器正是实现两个模拟量,电压或电流相乘的电子器件。采用集成模拟乘法器实现上述功能比用分立器件要简单得多,而且性能优越,因此集成模拟乘法器在无线通信、广播电视等方面应用较为广泛。 混频器在通信工程和无线电技术中,应用非常广泛,在调制系统中,输入的基带信号都要经过频率的转换变成高频已调信号。在解调过程中,接收的已调高频信号也要经过频率的转换,变成对应的中频信号。特别是在超外差式接收机中,混频器应用较为广泛,混频电路是应用电子技术和无线电专业必须掌握的关键电路。 本次设计主要内容是基于MC1496的混频器应用设计与仿真,阐述混频器基本原理,并在电路设计与Multisim仿真环境中创建集成电路乘法器MC1496电路模块,利用模拟乘法器MC1496完成各项电路的设计与仿真,并结合双踪示波器实现对信号的混频,对接收信号进行频率的转换,变成需要的中频信号。 1.1混频器原理 混频技术应用的相当广泛,混频器是超外差接收机中的关键部件。直放式接收机是高频小信号检波,工作频率变化范围大时,工作频率对高频通道的影响比较大(频率越高,放大量越低,反之频率低,增益高),而且对检波性能的影响也较大,灵敏度较低。采用超外差技术后,将接收信号混频到一固定中频,放大量基本不受接收频率的影响,这样,频段内信号的放大一致性好,灵敏度可以做得很高,选择性也较好。因为放大功能主要放在中放,

模拟乘法器实验

3.12模拟乘法器 一.实验目的 1. 了解模拟乘法器的构成和工作原理。 2. 掌握模拟乘法器在运算电路中的运用。 二.实验原理 集成模拟乘法器是实现两个模拟信号相乘的器件,它广泛用于乘法、除法、乘方和开方等模拟运算,同时也广泛用于信息传输系统作为调幅、解调、混频、鉴相和自动增益控制电路,是一种通用性很强的非线性电子器件,目前已有多种形式、多品种的单片集成电路,同时它也是现代一些专用模拟集成系统中的重要单元。 1. 模拟乘法器的基本特性 模拟乘法器是一种完成两个模拟信号(连续变化的电压或电流)相乘作用的电子器件,通常具有两个输入端和一个输出端,电路符号如图3-12-1所示。 u x u y o 图3-12-1 模拟乘法器的电路符号 若输入信号为x u , y u ,则输出信号o u 为: o u =k y u x u 式中: k 为乘法器的增益系数或标尺因子,单位为V 1 . 根据两个输入电压的不同极性,乘法输出的极性有四种组合,用图3-12-2所示的工作象限来说明。 图 3-12-2 模拟乘法器的工作象限 若信号x u 、y u 均限定为某一极性的电压时才能正常工作,该乘法器称为单象限乘法器;若信号x u 、y u 中一个能适应正、负两种极性电压,而另一个只能适应单极性电压,则为二象限乘法器;若两个输入信号能适应四种极性组合,称为四象限乘法器。

2. 集成模拟乘法器 集成模拟乘法器的常见产品有BG314、F1595、F1596、MC1495、MC1496、LM1595、LM1596等。下面介绍BG314集成模拟乘法器。 (1) BG314内部结构如图3-12-3所示,外部电路如图3-12-4所示: 1 8 43 7 6 5142+ 9 121110 13 7 图3-12-3 BG314内部电路

矩阵乘法的并行化 实验报告

北京科技大学计算机与通信工程学院 实验报告 实验名称: 学生姓名: 专业: 班级: 学号: 指导教师: 实验成绩:________________________________ 实验地点: 实验时间:2015年05月

一、实验目的与实验要求 1、实验目的 1对比矩阵乘法的串行和并行算法,查看运行时间,得出相应的结论;2观察并行算法不同进程数运行结果,分析得出结论; 2、实验要求 1编写矩阵乘法的串行程序,多次运行得到结果汇总; 2编写基于MPI,分别实现矩阵乘法的并行化。对实现的并行程序进行正确性测试和性能测试,并对测试结果进行分析。 二、实验设备(环境)及要求 《VS2013》C++语言 MPICH2 三、实验内容与步骤 实验1,矩阵乘法的串行实验 (1)实验内容 编写串行程序,运行汇总结果。 (2)主要步骤 按照正常的矩阵乘法计算方法,在《VS2013》上编写矩阵乘法的串行程序,编译后多次运行,得到结果汇总。

实验2矩阵乘法的并行化实验 3个总进程

5个总进程 7个总进程

9个进程 16个进程 四:实验结果与分析(一)矩阵乘法并行化

矩阵并行化算法分析: 并行策略:1间隔行带划分法 算法描述:将C=A*B中的A矩阵按行划分,从进程分得其中的几行后同时进行计算,最后通信将从进程的结果合并的主进程的C矩阵中 对于矩阵A*B 如图:进程1:矩阵A第一行 进程2:矩阵A第二行 进程3:矩阵A第三行 进程1:矩阵A第四行 时间复杂度分析: f(n) =6+2+8+k*n+k*n+k*n+3+10+n+k*n+k*n+n+2 (k为从进程分到的行数) 因此O(n)=(n); 空间复杂度分析: 从进程的存储空间不共用,f(n)=n; 因此O(n)=(n); 2间隔行带划分法 算法描述:将C=A*B中的A矩阵按行划分,从进程分得其中的几行后同时进行计算,最后通信将从进程的结果合并的主进程的C矩阵中 对于矩阵A*B 如图:进程1:矩阵A第一行 进程2:矩阵A第二行 进程3:矩阵A第三行 进程3:矩阵A第四行 时间复杂度分析: f(n) =6+2+8+k*n+k*n+k*n+3+10+n+k*n+k*n+n+2 (k为从进程分到的行数) 因此O(n)=(n); 空间复杂度分析: 从进程的存储空间不共用,f(n)=n; 因此T(n)=O(n);

GPU上的矩阵乘法的设计与实现

计 算 机 系 统 应 用 https://www.360docs.net/doc/d08680677.html, 2011 年 第20卷 第 1期 178 经验交流 Experiences Exchange GPU 上的矩阵乘法的设计与实现① 梁娟娟,任开新,郭利财,刘燕君 (中国科学技术大学 计算机科学与技术学院,合肥 230027) 摘 要: 矩阵乘法是科学计算中最基本的操作,高效实现矩阵乘法可以加速许多应用。本文使用NVIDIA 的CUDA 在GPU 上实现了一个高效的矩阵乘法。测试结果表明,在Geforce GTX 260上,本文提出的矩阵乘法的速度是理论峰值的97%,跟CUBLAS 库中的矩阵乘法相当。 关键词: 矩阵乘法;GPU ;CUDA Design and Implementation of Matrix Multiplication on GPU LIANG Juan-Juan, REN Kai-Xin, GUO Li-Cai, LIU Yan-Jun (School of Computer Science and Technology, University of Science and Technology of China, Hefei 230027, China) Abstract: Matrix multiplication is a basic operation in scientific computing. Efficient implementation of matrix multiplication can speed up many applications. In this paper, we implement an efficient matrix multiplication on GPU using NVIDIA’s CUDA. The experiment shows that our implementation is as fast as the implementation in CUBLAS, and the speed of our implementation can reach the peak speed’s 97%, on Geforce GTX260. Keywords: matrix multiplication; GPU; CUDA GPU 是一种高性能的众核处理器,可以用来加速许多应用。CUDA 是NVIDIA 公司为NVIDIA 的GPU 开发的一个并行计算架构和一门基于C 的编程语言。在CUDA 中程序可以直接操作数据而无需借助于图形系统的API 。现在已经有许多应用和典型算法使用CUDA 在GPU 上实现出来。 1 引言 矩阵乘法是科学计算中的最基本的操作,在许多领域中有广泛的应用。对于矩阵乘法的研究有几个方向。一个是研究矩阵乘法的计算复杂度,研究矩阵乘法的时间复杂度的下界,这方面的工作有strassen 算法[1]等。另外一个方向是根据不同的处理器体系结构,将经典的矩阵乘法高效的实现出来,这方面的结果体现在许多高效的BLAS 库。许多高效的BLAS 库都根据体系结构的特点高效的实现了矩阵乘法,比如GotoBLAS [2], ATLAS [3]等。Fatahalian [4]等人使 用着色语言设计了在GPU 上的矩阵乘法。CUBLAS 库是使用CUDA 实现的BLAS 库,里面包含了高性能的矩阵乘法。 本文剩下的部分组织如下,第2节介绍了CUDA 的编程模型,简单描述了CUDA 上编程的特点。第3节讨论了数据已经拷贝到显存上的矩阵乘法,首先根据矩阵分块的公式给出了一个朴素的矩阵乘法实现,分析朴素的矩阵乘法的资源利用情况,然后提出了一种新的高效的矩阵乘法。第4节讨论了大规模的矩阵乘法的设计和实现,着重讨论了数据在显存中的调度。第5节是实验结果。第6节是总结和展望。 2 CUDA 编程模型和矩阵乘法回顾 2.1 CUDA 编程模型 NVIDIA 的GPU 是由N 个多核处理器和一块显存构成的。每个多核处理器由M 个处理器核,1个指令部件,一个非常大的寄存器堆,一小块片上的共享内 ① 基金项目:国家自然科学基金(60833004);国家高技术研究发展计划(863)(2008AA010902) 收稿时间:2010-04-26;收到修改稿时间:2010-05-21

矩阵连乘实验报告

华北电力大学科技学院 实验报告 实验名称矩阵连乘问题 课程名称计算机算法设计与分析 专业班级:软件12K1 学生姓名:吴旭 学号:121909020124 成绩: 指导老师:刘老师实验日期:2014.11.14

一、实验内容 矩阵连乘问题,给定n个矩阵{A1,A2,…,A n},其中A i与A i+1是可乘的,i=1,2,3…,n-1。考察这n个矩阵的连乘A1,A2,…,A n。 二、主要思想 由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已经完全加括号,则可依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘积可递归的定义为: (1)单个矩阵是完全加括号的; (2)矩阵连乘积A是完全加括号的,则A可表示为2个完全加括号 的矩阵连乘积B和C的乘积并加括号,即A=(BC)。 运用动态规划法解矩阵连乘积的最优计算次序问题。按以下几个步骤进行 1、分析最优解的结构 设计求解具体问题的动态规划算法的第1步是刻画该问题的最优解的结构特征。为方便起见,将矩阵连乘积简记为A[i:j]。考察计算A[1:n]的最优计算次序。设这个计算次序矩阵在A k和A k+1之间将矩阵链断开,1n,则其相应的完全加括号方式为((A1…A k)(A k+1…A n))。依此次序,先计算A[1:k]和A[k+1:n],然后将计

算结果相乘得到A[1:n]。 2、建立递归关系 设计动态规划算法的第二步是递归定义最优值。对于矩阵连乘积的最优计算次序问题,设计算A[i:j],1i n,所需的最少数乘次数为m[i][j],原问题的最优值为m[1][n]。 当i=j时,A[i:j]=A i为单一矩阵,无需计算,因此m[i][i]=0,i=1,2,…n。 当i

基于模拟乘法器MC1496的混频器设计

摘要 在高频电子线路中,振幅调制、同步检波、混频、倍频、鉴频等调制与解调的过程均可视为两个信号相乘的过程,而集成模拟乘法器正是实现两个模拟量,电压或电流相乘的电子器件。采用集成模拟乘法器实现上述功能比用分立器件要简单得多,而且性能优越,因此集成模拟乘法器在无线通信、广播电视等方面应用较为广泛。 混频器在通信工程和无线电技术中,应用非常广泛,在调制系统中,输入的基带信号都要经过频率的转换变成高频已调信号。在解调过程中,接收的已调高频信号也要经过频率的转换,变成对应的中频信号。特别是在超外差式接收机中,混频器应用较为广泛,混频电路是应用电子技术和无线电专业必须掌握的关键电路。 Multisim10是属于新一代的电子工作平台,是一种电子技术界广泛应用的优秀计算机仿真软件。 主要内容是基于MC1496的混频器应用设计与仿真,阐述混频器基本原理,并在电路设计与Multisim仿真环境中创建集成电路乘法器MC1496电路模块,利用模拟乘法器MC1496完成各项电路的设计与仿真,并结合双踪示波器实现对信号的混频,对接收信号进行频率的转换,变成需要的中频信号。 关键词:MC1496乘法器;混频器;Multisim

Abstract In high frequency electronic circuit course, amplitude modulation,synchronization demodulation, mixer, frequency, frequency modulation and demodulation are regarded as the process of the two signals are multiplied, and the integrated analog multiplier is the realization of two analog electronic device, a voltage or current multiplication. The integrated analog multiplier to achieve the above functions than discrete devices are much more simple, and superior performance, therefore the integrated analog multiplier is widely used in wireless communications, radio and television broadcasting. The mixer in communication engineering and radio technology,application is very extensive, in modulation system, the input of baseband signal are through frequency conversion into a high frequency modulated signal. In the demodulation process, the received modulated high frequency signal after frequency conversion, into intermediate frequency signals corresponding to. Especially in the superheterodyne receiver, mixer is widely used, mixing circuit is the key module of Applied Electronic Technology and professional radio must master. Multisim10 is a new generation of electronic platform belongs to, is an excellent computer widely used an electronic technology field simulation software. The main content is the mixer application design and simulation based on MC1496, expounds the basic principle of mixer, and the circuit design and Simulation in Multisim environment to create integrated circuit MC1496 multiplier circuit module, the analog multiplier MC1496 to complete the design and Simulation of the circuit, and combined with the dual trace oscilloscope to achieve signal mixing, the switching frequency of the received signal the intermediate frequency signal, a need. Key Words:MC1496 multiplier; mixer; Multisim

20151060042-贾炜光-混频器仿真实验报告

混频器仿真实验 姓名:贾炜光 学号:20151060042 学院:信息学院 专业:通信工程 指导教师:谢汝生

一、实验目的 (1)加深对混频理论方面的理解,提高用程序实现相关信号处理的能力; (2)掌握multisim实现混频器混频的方法和步骤; (3)掌握用muitisim实现混频的设计方法和过程,为以后的设计打下良好的基础。 二.实验原理 混频器将天线上接收到的射频信号与本振产生的信号相乘,cosαcosβ=[cos(α+ β)+cos(α-β)]/2 可以这样理解,α为射频信号频率量,β为本振频率量,产生和差频。当混频的频率等于中频时,这个信号可以通过中频放大器,被放大后,进行峰值检波。检波后的信号被视频放大器进行放大,然后显示出来。由于本振电路的振荡频率随着时间变化,因此频谱分析仪在不同的时间接收的频率是不同的。 混频是指将信号从一个频率变换到另外一个频率的过程 ,其实质是频谱线性搬移的过程。在超外差接收机中 ,混频的目的是保证接收机获得较高的灵敏度 ,足够的放大量和适当的通频带 ,同时又能稳定地工作。混频电路包括三个组成部分 : 本机振荡器、非线性器件、带通滤波器。[1] 由于非线性元件( 如二极管、三极管、场效应管等) 的作用,混频过程中会产生很多的组合频率分量 : p f L ±qf S 。一般来讲 ,其中满足需要的仅仅是 f I =f L -f S 或者是f I =f S -f L 。前者产生中频的方式称为高差式混频 , 后者称为低差式混频。在这里 ,混频过程中产生的一系列组合频率分量经过带通滤波器即可以选择输出相应的中频 ,而其他的频率分量会得到抑制。

数学实验矩阵的运算

数学实验报告 学院: 班级: 学号: 姓名: 完成日期:

实验四矩阵的运算 (一)投入产出分析 一.实验目的 1.理解投入产出分析中的基本概念和模型; 2.从数学和投入产出理论的角度,理解矩阵乘法、逆矩 阵等的含义。 二.问题描述 设国民经济由农业、制造业和服务业三个部门构成,已知某年它们之间的投入产出关系、部需求、初始投入等如表1-1所示 表1-1国民经济三产部门之间的投入产出表 根据表回答下列问题: (1)如果农业、制造业、服务业外部需求为50,150,100,问三个部门总产出分别为多少? (2)如果三个部门的外部需求分别增加一个单位,问

他们的总产出分别为多少? 三.实验过程 1.问题(1)的求解 (1)求直接消耗矩阵A 根据直接消耗的计算公式 a ij=x ij/x j 和各部门中间需求; x n a n 运行如下代码可得直接消耗系数表。 X=[15 20 30;30 10 45;20 60 0]; X_colsum=[100 200 150]; X_rep=repmat(X_colsum,3,1) A=X./ X_rep 运行结果为: A = 0.1500 0.1000 0.2000 0.3000 0.0500 0.3000 0.2000 0.3000 0 (2)求解 根据公式 X=(I-A)-1y 在运行如下代码

y=[50;150;100]; n=size(y,1); W=eye(n)-A; X=W\y 运行结果为 X = 139.2801 267.6056 208.1377 即三个部门的总产出分别为139.2801,267.6056, 208.1377亿元。 2.问题2求解 设外部需求由y增加至y+Δy,则产出x的增量为 Δx=(I-A)-1(y+Δy)- (I-A)-1y=(I-A)-1Δy 利用问题(1)求得的I-A矩阵,再运行如下的MATLAB 代码可得问题的结果: dx=inv(W) 运行结果: dx = 1.3459 0.2504 0.3443 0.5634 1.2676 0.4930 0.4382 0.4304 1.2167

模拟乘法器1496实验报告

实验课程名称:_高频电子线路

五.实验原理与电路设计仿真 1、集成模拟乘法器1496的内部结构 集成模拟乘法器是完成两个模拟量(电压或电流)相乘的电子器件。在高频电子线路中,振幅调制、同步检波、混频、倍频、鉴频、鉴相等调制与解调的过程,均可视为两个信号相乘或包含相乘的过程。采用集成模拟乘法器实现上述功能比采用分立器件如二极管和三极管要简单的多,而且性能优越。所以目前在无线通信、广播电视等方面应用较多。集成模拟乘法器的常见产品有BG314、F1595、F1596、MC1495、MC1496、LM1595、LM1596等。下面介绍MC1496集成模拟乘法器。 (1)MC1496的内部结构 MC1496 是目前常用的平衡调制/解调器。它的典型应用包括乘、除、平方、开方、倍频、调制、混频、检波、鉴相、鉴频、动态增益控制等。MC1496 的和内部电路与外部引脚图如图1(a)(b)所示。 (a)1496内部电路 (b)1496引脚图 图1 MC1496的内部电路及引脚图 它内部电路含有 8 个有源晶体管,引脚 8 与 10 接输入电压 VX、1与 4接另一输入电压VY,6 与12 接输出电压 VO。一个理想乘法器的输出为VO=KVXVY,而实际上输出存在着各种误差,其输出的关系为:VO=K(VX +VXOS)(VY+VYOS)+VZOX。为了得到好的精度,必须消除 VXOS、VYOS与 VZOX三项失调电压。引脚 2 与 3 之间需外接电阻,对差分放大器 T5与 T6产生交流负反馈,可调节乘法器的信号增益,扩展输入电压的线性动态范围。 各引脚功能如下: 1:SIG+ 信号输入正端 2: GADJ 增益调节端 3:GADJ 增益调节端 4: SIG- 信号输入负端 5:BIAS 偏置端 6: OUT+ 正电流输出端 7: NC 空脚 8: CAR+ 载波信号输入正端 9: NC 空脚 10: CAR- 载波信号输入负端11: NC 空脚 12: OUT- 负电流输出端 13: NC 空脚 14: V- 负电源 (2)Multisim建立MC1496电路模块 启动multisim11程序,Ctrl+N新建电路图文件,按照MC1496内部结构图,将元器件放到电子工作平台的电路窗口上,按住鼠标左键拖动,全部选中。被选择的电路部分由周围的方框标示,表示完成子电路的选择。为了能对子电路进行外部连接,需要对子电路添加输入/输出。单击Place / HB/SB Connecter 命令或使用Ctrl+I 快捷操作,屏幕上出现输入/输出符号,

strassen矩阵相乘算法C++代码

Strassen 矩阵相乘算法代码 #include #include #include #include usingnamespace std; template class Strassen_class { public: void ADD(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize); void SUB(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize); void MUL(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize);//朴素算法实现void FillMatrix(T** MatrixA, T** MatrixB, int length);//A,B矩阵赋值 void PrintMatrix(T **MatrixA, int MatrixSize);//打印矩阵 void Strassen(int N, T **MatrixA, T **MatrixB, T **MatrixC);//Strassen算法实现 }; template void Strassen_class::ADD(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize) { for (int i = 0; i void Strassen_class::SUB(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize) { for (int i = 0; i void Strassen_class::MUL(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize) {

MATLAB矩阵实验报告

MATLAB 程序设计实验 班级:电信1104班 姓名:龙刚 学号:1404110427 实验内容:了解MA TLAB 基本使用方法和矩阵的操作 一.实验目的 1.了解MA TLAB 的基本使用方法。 2.掌握MA TLAB 数据对象的特点和运算规则。 3.掌握MA TLAB 中建立矩阵的方法和矩阵的处理方法。 二.实验内容 1. 浏览MATLAB 的start 菜单,了解所安装的模块和功能。 2. 建立自己的工作目录,使用MA TLAB 将其设置为当前工作目录。使用path 命令和工作区浏览两种方法。 3. 使用Help 帮助功能,查询inv 、plot 、max 、round 等函数的用法和功能。使用help 命令和help 菜单。 4. 建立一组变量,如x=0:pi/10:2*pi ,y=sin(x),在命令窗口显示这些变量;在变量窗口打开这些变量,观察其值并使用绘图菜单绘制y 。 5. 分多行输入一个MA TLAB 命令。 6. 求表达式的值 ()6210.3424510w -=+? ()22tan b c a e abc x b c a ππ++ -+=++,a=3.5,b=5,c=-9.8 ()220.5ln 1t z e t t =++,21350.65i t -??=??-?? 7.已知 1540783617A --????=??????,831253320B -????=????-?? 求 A+6B ,A 2-B+I A*B ,A.*B ,B*A A/B ,B/A [A,B],[A([1,3], :); B^2]

8.已知 23100.7780414565532503269.5454 3.14A -????-??=????-?? 输出A 在[10,25]范围内的全部元素 取出A 的前三行构成矩阵B ,前两列构成矩阵C ,右下角3x2子矩阵构成矩阵D ,B 与C 的乘积构成矩阵E 分别求表达式E

模拟乘法混频实验报告

模拟乘法混频实验报告 姓名: 学号: 班级: 日期:

模拟乘法混频 一、实验目的 1. 进一步了解集成混频器的工作原理 2. 了解混频器中的寄生干扰 二、实验原理及实验电路说明 混频器的功能是将载波为vs (高频)的已调波信号不失真地变换为另一载频(固定中频)的已调波信号,而保持原调制规律不变。例如在调幅广播接收机中,混频器将中心频率为535~1605KHz 的已调波信号变换为中心频率为465KHz 的中频已调波信号。此外,混频器还广泛用于需要进行频率变换的电子系统及仪器中,如频率合成器、外差频率计等。 混频器的电路模型如图1所示。 图1 混频器电路模型 混频器常用的非线性器件有二极管、三极管、场效应管和乘法器。本振用于产生一个等幅的高频信号VL ,并与输入信号 VS 经混频器后所产生的差频信号经带通滤波器滤出。目前,高质量的通信接收机广泛采用二极管环形混频器和由双差分对管平衡调制器构成的混频器,而在一般接收机(例如广播收音机)中,为了简化电路,还是采用简单的三极管混频器。本实验采用集成模拟相乘器作混频电路实验。 图2为模拟乘法器混频电路,该电路由集成模拟乘法器MC1496完成。 V s V

+12 -12 J7J8 J9 C12104 C11104 C7104 C15104 C8104 R101K R11200 R12820 R13820 R71K R14100 R153.3K R163.3K R216.8K R20510 R171k F24.5M D28.2V C16104 TH6 TH7 TH8 TH9 TP5 SIG+ 1 G N A D J 2 G N A D J 3 SIG- 4 B I A S 5 OUT+6NC 7CAR+8 NC 9CAR- 10 NC 11OUT-12 NC 13V E E 14 U1 MC1496 图2 MC1496构成的混频电路 MC1496可以采用单电源供电,也可采用双电源供电。本实验电路中采用+12V ,-8V 供电。R12(820Ω)、R13(820Ω)组成平衡电路,F2为4.5MHz 选频回路。本实验中输入信号频率为 fs =4.2MHz ,本振频率fL =8.7MHz 。 为了实现混频功能,混频器件必须工作在非线性状态,而作用在混频器上的除了输入信号电压VS 和本振电压VL 外,不可避免地还存在干扰和噪声。它们之间任意两者都有可能产生组合频率,这些组合信号频率如果等于或接近中频,将与输入信号一起通过中频放大器、解调器,对输出级产生干涉,影响输入信号的接收。干扰是由于混频器不满足线性时变工作条件而形成的,因此干扰不可避免,其中影响最大的是中频干扰和镜象干扰。 三、 实验仪器与设备 高频电子线路综合实验箱; 高频信号发生器; 双踪示波器; 频率计。 四、实验步骤 1. 打开本实验单元的电源开关,观察对应的发光二极管是否点亮,熟悉电路各部分元件的作用。

矩阵运算实验报告

实验报告 --矩阵运算 一.实验目的。 1.通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。 2.通过实践进一步领会程序设计的特点和应用,提高运用C++ 语言以及面向对象知识解决实际问题的能力。 3.通过实践掌握用C++ 语言编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识; 4.学会利用C++程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力。为后续的相关课程的学习打下基础。 二.实验要求。 1.学会建立模板类; 2.实现矩阵的“加”、“减”、“乘”、“数乘”、“转置”; 3.动态存分配并用随机数填充; 4.注意“加”、“减”、“乘”要进行条件的判断; 三.设计思路。

3.1算法基本流程 1)获取用户输入的矩阵1的行数和列数,动态生成一个一维数组 2)利用随机数生成数组成员,并利用两个循环输出数组,使其符合矩阵的格式 3)矩阵2同矩阵1的处理方法 4)通过两个矩阵的行数和列数比较来判断能否进行加减乘等运算,如不能,输出相关信息 5)如能够进行计算,则利用数组进行相应运算,并按照正确格式输出 6)通过改变一维数组中元素的顺序来实现转置并输出 3.2算法流程图

四.基本界面。

五.关键代码。 5.1关键类的声明 class CMatrixclass { public: CMatrixclass() { int m_Row = 0; //行 int m_Col = 0; //列 m_pElements = NULL; //一维数组

混频器仿真实验报告

混频器仿真实验报告 一.实验目的 (1)加深对混频理论方面的理解,提高用程序实现相关信号处理的能力; (2)掌握multisim实现混频器混频的方法和步骤; (3)掌握用muitisim实现混频的设计方法和过程,为以后的设计打下良好的基础。 二.实验原理以及实验电路原理图 (一).晶体管混频器电路仿真 本实验电路为AM调幅收音机的晶体管混频电路,它由晶体管、输入信号源V1、本振信号源V2、输出回路和馈电电路等组成,中频输出465KHz的AM波。 电路特点:(1)输入回路工作在输入信号的载波频率上,而输出回路则工作在中频频率(即LC选频回路的固有谐振频率fi)。(2)输入信号幅度很小,在在输入信号的动态范围内,晶体管近似为线性工作。(3)本振信号与基极偏压Eb共同构成时变工作点。由于晶体管工作在线性时变状态,存在随U L周期变化的时变跨导g m(t)。 工作原理:输入信号与时变跨导的乘积中包含有本振与输入载波的差频项,用带通滤波器取出该项,即获得混频输出。 在混频器中,变频跨导的大小与晶体管的静态工作点、本振信号的幅度有关,通常为了使混频器的变频跨导最大(进而使变频增益最大),总是将晶体管的工作点确定在:U L=50~200mV,I EQ=0.3~1mA,而且,此时对应混频器噪声系数最小。 (二).模拟乘法器混频电路 模拟乘法器能够实现两个信号相乘,在其输出中会出现混频所要求的差频(ωL-ωC),然后利用滤波器取出该频率分量,即完成混频。

与晶体管混频器相比,模拟乘法器混频的优点是:输出电流频谱较纯,可以减少接收系统的干扰;允许动态范围较大的信号输入,有利于减少交调、互调干扰。 三.实验内容及记录 (一).晶体管混频器电路仿真 1、直流工作点分析 使用仿真软件中的“直流工作点分析”,测试放大器的静态直流工作点。 注:“直流工作点分析”仿真时,要将V1去掉,否则得不到正确结果。因为V1与晶体管基极之间无隔直流回路,晶体管的基极工作点受V1影响。若在V1与Q1之间有隔直流电容,则仿真时可不考虑V1的存在。 2、混频器输出信号“傅里叶分析” 选取电路节点8作为输出端,对输出信号进行“傅里叶分析”,参数设置为: 基频5KHz,谐波数为120,采用终止时间为0.001S,线性纵坐标请对测试结果进行分析。在图中指出465KHz中频信号频谱点及其它谐波成分。 注:傅里叶分析参数选取原则:频谱横坐标有效范围=基频×谐波数,所以这里须进行简单估算,确定各参数取值。

相关文档
最新文档