栈的应用-表达式转换
中缀->后缀先对中缀表达式按运算优先次序加上括号,再把操作符后移到右括号的后面并以就近移动为原则,最后将所有括号消去。
中缀->前缀先对中缀表达式按运算优先次序通统加上括号,再把操作符前移到左括号前并以就近移动为原则,最后将所有括号消去。
代码实现中缀转为后缀原理:
isp叫做栈内(in stack priority)优先数
icp叫做栈外(in coming priority)优先数。
icp>isp则入栈;icp<isp则出栈、输出;icp=isp只出栈 (的栈外优先级最高,一来即入栈;入栈后优先级极低,这样其他操作符可以入栈。
其他操作符进入栈后优先级升1,这样可以保证相同优先级的从左到右计算。
优先级相同:( ) # #
算法:
操作符栈初始化,将结束符‘#’进栈。然后读入中缀表达式字符流的首字符ch。
重复执行以下步骤,直到ch = ‘#’,同时栈顶的操作符也是‘#’,停止循环。
循环过程:
若ch是操作数直接输出,读入下一个字符ch。
若ch是操作符,判断ch的优先级icp和位于栈顶的操作符op的优先级isp:
若 icp(ch) > ...
栈的应用-表达式求值
表达式的三种表示方法 设 Exp = S1 OP S2
OP S1 S2 为前缀表示法S1 OP S2 为中缀表示法S1 S2 OP 为后缀表示法前缀式的运算规则为:
连续出现的两个操作数和在它们之前且紧靠它们的一个运算符构成一个最小表达式;
后缀式的运算规则为:
连续出现的两个操作数和在它们之后且紧靠它们的一个运算符构成一个最小表达式;
利用栈从后缀式求值原理:遇到运算数则入栈,遇到操作符则出栈2个数,计算,结果入栈1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221 ...
稀疏矩阵的压缩存储
12345678910111213#include <iostream>using namespace std;struct Triple{ //三元组 int row, col; //非零元素行号/列号 int value; //非零元素的值 void operator=(Triple &R) //赋值 { row = R.row; col = R.col; value = R.value; }};
12345678910111213141516171819202122class SparseMatrix{private: int Rows, Cols, Terms; //行/列/非零元素数 Triple *smArray; //三元组表public: SparseMatrix(int Rw, int Cl ...
栈的应用-中缀表达式求值
原理:使用两个栈操作符栈OPTR (operator),操作数栈OPND(operand),为了实现这种计算,需要考虑各操作符的优先级
代码思路:
建立并初始化OPTR栈和OPND栈,然后在OPTR栈中压入一个“#”
扫描中缀表达式,取一字符送入ch。
当ch != ‘#’ 或OPTR栈的栈顶 != ‘#’时, 执行以下工作, 否则结束算法。在OPND栈的栈顶得到运算结果。
循环过程:
若ch是操作数,进OPND栈,读下一字符到ch;
若ch是操作符,比较icp(ch)的优先级和isp(OPTR)的优先级:
若icp(ch) > isp(OPTR),则ch进OPTR栈,读下一字符到ch;
若icp(ch) < isp(OPTR),则从OPND栈退出a2和a1,从OPTR栈退出θ, 形成运算指令 (a1)θ(a2),结果进OPND栈,不读入下一字符而是继续比较栈顶元素;
若icp(ch) == isp(OPTR) 且ch == ‘)’,则从OPTR栈退出’(‘,对消括号,然后从中缀表达式取下一字符送入ch;
代码实现:
1234567891011121314151 ...
振幅调制与解调
振幅调制与解调实验目的1.加深对振幅调制电路的理解。2.加深对振幅解调电路的理解。
实验内容
利用MC1496实现AM和DSB调制;2.利用二极管峰值包络检波器实现检波;
利用MC1496实现同步检波。实验原理概述首先看调幅电路。用1496组成的调幅器实验电路如图1所示。图中6P1为载波输入口,6TP1为其测量点。6P2为消息信号输入口,6TP2为测量点。6W1用来调整接入1496芯片1脚的直流电压,当一脚直流电压为零时,其输出为双边带调幅波(DSB),当1脚加有直流电压时,其输出为普通调幅波(AM)。调整6W1电位器,也可以调整普通调幅波的调制度。图中6Q1为射极跟随器,对调幅信号进行放大,且提高带负载能力。图中6W2用以调整射随器的工作点电压。调幅信号经射随后由6P3输出,6TP3为其测量点。其次看二极管峰值包络检波器电路。本实验电路主要包括二极管、RC低通滤波器和低频放大部分,实验电路如图2所示。图中,5D1为检波管,5C2、5R2、5C3构成低通滤波器,5R3、5W3为二极管检波直流负载,5W3用来调节直流负载大小。图中5Q1、5Q2对检波后的音频进行放大,5W5用来调整5Q1 ...
正弦波振荡器和频率调制设计
正弦波振荡器和频率调制设计实验目的
加深对各种正弦波振荡器工作原理的理解。
掌握直接调频的工作原理和调频波的性质。实验内容
观察石英晶体振荡器输出频率;
观察变容二极管的直接调频效果;
调频波性质分析。 实验原理概述反馈型正弦波振荡器我们在课程中进行了详细讲解,包括三端式振荡器中的哈特莱振荡器、考毕兹振荡器、克拉泼振荡器和西勒振荡器,也包括石英晶体振荡器中的并联型、串联型和泛音型,它们的工作原理不再赘述。直接看实验电路。图1为电容反馈式三端振荡器实验电路。图中,左侧部分为LC振荡器,右侧部分为射极跟随器。三极管2Q1为振荡器的振荡管,2R21、2R22和2R24为三极管2Q1的直流偏置电阻,以保证振荡管2Q1正常工作。图中开关2K1打到“S”位置时,为克拉泼振荡电路,打到“P”位置时,为西勒振荡电路。图中2D2为变容二极管,调整2W2即可改变变容管上的直流电压,从而改变变容管的电容,也即控制着振荡频率的变化。电位器上方的器件为三端可调稳压电源,调整2W1可改变振荡器三极管2Q1的电源电压。当需要LC振荡器输出时,需将2P2、2P4用短铆孔线连接起来。三极管2Q3为射极跟随器,以提高带负 ...
混频器性能的测试与分析
混频器性能的测试与分析实验目的1.熟悉三极管混频器的基本工作原理;2.熟悉MC1496实现混频的方法;3.掌握混频器输出信号的频率分布情况,尤其是非线性部分;4.掌握频谱分析仪的使用方法。
实验内容1.用示波器观察混频器输入输出波形;2.用频率计测量混频器输出频率;3.用频谱分析仪观察和分析混频器输出波形。
实验原理概述在我们的课程中,混频器的功能定义为将不同的载波频率转换为固定的中频,实际上,它通过“差频”或“和频”实现信号在频率轴上的线性搬移。混频器常用的非线性器件有二极管、三极管、场效应管和乘法器。(1)晶体三极管混频器 三极管混频器是最简单的混频器之一,原理图如图1-1所示。从图可知,输入的高频信号u_s(f_s),通过 C_1 加到三极管的b极,而本振信号 u_L(f_L) 经 C_c 耦合,加在三极管的e极,这样加在三极管输入端的交流信号为 u_{be}=u_s+u_L (总电压还有直流电压)。即两信号在三极管输入端互相叠加。由于三极管的即转移特性存在非线性,使两信号相互作用,产生很多新的频率成分,其中就包括和频及差频,通过后端的带通滤波器将其选出,从而实现混频。根 ...
高频功率放大器设计和计算
高频功率放大器设计和计算实验目的1.加深对丙类功率放大器基本工作原理的理解。2.掌握输入电压幅度Vbm,集电极电源Vcc及负载RP变化对放大器工作状态的影响。
实验内容
观察高频功率放大器丙类工作状态的现象,并分析其特点;2.调节电路,观察输入信号幅度Vbm,集电极电源Vcc变化时余弦电流脉冲的变化过程;
测试负载变化时三种状态(欠压、临界、过压)的余弦电流波形。实验原理概述高频功率放大器是一种能量转换器件,它是将电源供给的直流能量转换为高频交流输出。它的主要参数是输出功率和效率,一般工作在丙类状态。高频功放的电路原理图如图1所示。在我们的课程中,对该电路的工作原理、计算方法、动态特性、负载特性、VCC变化特性和馈电电路都进行了详细讲解。这里不再赘述,大家做实验时结合讲义进行回顾。此处只补充输入的激励电压幅值Vbm变化对工作状态的影响。当集电极电源电压 V_{CC}、偏置电压 V_{BB} 和负载电阻 R_P保持恒定时,Vbm变化对放大器工作状态的影响如图2所示。可以看出,当Vbm增大时, i_{cmax}、Vcm也增大;当Vbm增大到一定程度,放大器的工作状态由欠压进入过压,电流波形 ...
小信号放大器
小信号放大器实验目的1.熟悉电子元器件和高频电子线路实验系统;2.掌握单调谐和双调谐放大器的基本工作原理;3.掌握测量放大器幅频特性的方法;4.熟悉放大器集电极负载对放大器幅频特性的影响。
实验内容1.测量单调谐和双调谐放大器的幅频特性;2.用示波器测量输入、输出信号幅度,并计算放大器的放大倍数;3.观察耦合电容对双调谐回路放大器幅频特性的影响;4.观察集电极负载对放大器幅频特性的影响。
实验原理概述小信号调谐放大器是构成无线电通信设备的主要电路,其作用是对天线接收的微弱电信号进行放大和选频。调谐放大器主要由放大器和调谐回路两部分组成,对它的主要指标要求是:有足够的增益,满足通频带和选择性要求,工作稳定等。小信号调谐放大器按调谐回路区分有单调谐放大器、双调谐放大器和参差调谐放大器。共发射极单调谐放大器原理电路如图1-1所示。图中晶体管T起放大信号的作用,Rb1、Rb2、Re为直流偏置电阻,用以保证晶体管工作于放大区域,从而放大器工作于甲类。Ce是Re的旁路电容,Cb、Cc是输入、输出耦合电容,L、C是谐振回路作为放大器的集电极负载起选频作用,它采用抽头接入法,以减轻晶体管输出电阻对谐 ...
Markdown公式汇总
基本公式上下标示例源码渲染演示12345678$$A_1^2\\B_{12}\\2^{x^2+y}$$
A_1^2
B_{12}
2^{x^2+y}
分数示例源码渲染演示123456789$$\frac{x}{1+x^2}\\\frac{\frac{1}{2}+x}{y}\\\tfrac{a}{b}\frac{a}{b}$$
\frac{x}{1+x^2}
\frac{\frac{1}{2}+x}{y}
\\
\tfrac{a}{b}
\frac{a}{b}
开根号示例源码渲染演示12345$$\sqrt{x}\sqrt[3]{x}$$
\sqrt{x}
\sqrt[3]{x}
组合数示例源码渲染演示12345$$\binom{n}{k}\tbinom{n ...
通信原理实验三
实验报告实验目的1.通过实验掌握第一类部分响应系统的原理及实现方法;2.掌握基带信号眼图的概念及绘制方法。
实验原理1.部分响应系统为了提高系统的频带利用率,减小定时误差带来的码间干扰,升余弦传输特性在这两者的选择是有矛盾的。理想低通传输特性可以有最高的频带利用率\eta_s,但拖尾的波动比较大,衰减也比较慢。若能改善这种情况,并保留系统的带宽等于奈奎斯特带宽,就能在保证一定的传输质量前提下显著地提高传输速率。这是有实际意义的,特别是在高速大容量传输系统中。部分响应传输系统就具有这样的特点。部分响应传输系统是通过对理想低通滤波器冲激响应的线性加权组合,来控制整个传输系统冲激响应拖尾的波动幅度和衰减。当然,这样做会引入很强的码间干扰,但这种码间干扰是可控制的,是已知的,因此很容易从接收信号的抽样值中减去。由于这种组合并不影响系统的传输带宽,因此频带利用率高。
第一类部分响应系统是在相邻的两个码元间引入码间干扰。由于理想低通系统的传递函数为
H(f) = \begin{cases}
T_s &\text{|f|< \frac{1}{2T_s}}\\
0 &\text{其他}\\
\ ...
通信原理实验一
实验报告实验目的 通过实验掌握多径传播、信道的频率选择性、相干带宽等概念,理解多径信道对信号传输的影响。
实验原理多径信道指信号传输的路径不止一条,接收端同时收到来自多条传输路径的信号,这些信号可能同向相加或反向相消。由于各径时延差不同,每径信号的衰减不同,因此数字信号经过多径信号后有码间干扰。通常情况下,如果信号的码元间隔远大于多径间的最大时延差,此时信号经过多径后不会产生严重的码间干扰;相反,如果信号码元间隔与多径间的时延差可比,则信号经过多径传输后会产生严重的码间干扰,此时接收端需要考虑采用均衡和其他消除码间干扰的方法才能正确接收信号。由于多径,信道幅频特性不为常数,对某些频率产生较大的衰减,对某些频率的衰减小,即信道具有频率选择性。当输入信号的带宽远小于信道带宽时(第一个零点带宽),则信道对输入信号的所有频率分量的衰减几乎相同,这种情况下,信号经历平坦性衰减,当输入信号的带宽与信道带宽可比时,此时信号各频率分量经过信道的衰减不同,即信号经过了频率选择性的衰减。通常可用信道的时延扩展\tau_m来表示信道的多径扩展情况,多径时延扩展的倒数称为信道的相干带宽,设输入信号的码元间隔为 ...
通信原理实验二
实验报告实验目的1.加深理解DSB-SC、AM、SSB三种调幅方法的调制和解调原理及实现方法;2.通过实验观察信号的功率谱;3.在信道中加入噪声,观察对输出信号的影响。
实验原理1.双边带抑制载波调幅(DSB-SC)设均值为零的模拟基带信号为m(t),双边带抑制载波调幅(DSB-SC)信号为s(t)=m(t)cos2 \pi f_ct , 当m(t)是随机信号,其功率谱密度为P_s(f)=\frac{1}{4}[P_M(f-f_c)+P_M(f+f_c)],当m(t)是确知信号,其频谱为S(f)=\frac{1}{2}[M(f-f_c)+M(f+f_c)],其中P_M(f)是m(t)的功率谱密度,M(t)是m(t)的频谱。由于m(t)均值为0,因此调制后的信号不含离散的载波分量,若接收端能恢复出载波分量,则可以采用如下的相干解调r(t)=s(t)cos2 \pi f_ct=m(t)cos^{2}2 \pi f_ct= \frac{1}{2}m(t)+ \frac{1}{2}m(t)cos4 \pi f_ct,再用低通滤波器滤去高频分量,就恢复出了原始信息。2.具有离散大载波的双边带调幅 ...
Hexo博客搭建基础教程(二)
Vercel部署与自定义域名Vercel部署Vercel简介:vercel是一个代码托管平台,它能够托管你的静态html界面,甚至能够托管你的node.js与Python服务端脚本,是不想买服务器的懒人的福音!
首先需要一个Vercel账号,这里推荐用GitHub账户关联,这样你就可以在vercel中直接托管你的GitHub库中的项目了,实现开发部署一步到位。
当你用你的Github账户关联并绑定手机号登录之后,点击右上角的Add New Project创建新的项目,之后导入选项那里选择Continue with Github,这时候应该能看到你Github账号的仓库,选择你刚刚部署成功的存储静态博客的仓库.github.io右边的Import选项,表示你要导入该仓库。
起一个只能有字母、数字或者或者连字符的项目名称,然后其他默认,点击Deploy,等待一分钟即可部署成功,部署成功后电极Continue to Dashboard跳转到控制面板,下图所示就是控制面板,看到就代表成功部署到了,但是我们现在还不能访问他给出的域,因为GFW最近把Vercel屏蔽了。
绑定自定义域名现在你的 ...
Hexo博客搭建基础教程(一)
环境与工具准备本教程主要面对的是Windows用户
操作系统:Windows10
Node
Git
Hexo
文本编辑器
GitHub 帐号
一个域名
云服务器(可选)
Node的安装
打开Node官网,下载和自己系统相配的Node的安装程序,否则会出现安装问题。下载地址:https://nodejs.org/en/download/我个人的版本是 12.19.0,目前版本已经更新到19.0.0,按照个人经验,可以选个低一些的版本,可以和我的一样,否则后面会出现各种不兼容的问题!我之前就是安装16的,系统无法识别,如果大家遇到问题建议选个低版本的!历史版本下载页面:https://nodejs.org/en/download/releases/
下载后安装,安装的目录可以使用默认目录【C:/Program Files/nodejs/】,也可以自定义路径。这个环境路径切换坑也很多,如果大家C盘空间足够可以直接装C盘,如果想切换其他盘或者把环境遍历切换到自定义路径也可以,具体教程百度(不过坑比较多就是了)!
安装完成后,检查是否安装成功。在键盘按下win + R键,输入CMD,然后回车 ...
Markdown语法与外挂标签写法汇总
Markdown语法自带格式代码块示例源码渲染演示1234567891011# VSCode终端hexo clean; hexo shexo clean; hexo g; hexo dgit add .; git commit -m "npm publish"; npm version patch; git push# Cmder终端hexo clean && hexo shexo clean && hexo g && hexo dgit add . && git commit -m "npm publish" && npm version patchgit push1234567891011# VSCode终端hexo clean; hexo shexo clean; hexo g; hexo dgit add .; git commit -m "npm publish"; npm version patch; git push# Cmder终端 ...