C++经典排序方法-冒泡排序-选择排序-插入排序 #include<iostream>#include<string>using namespace std;//三种排序算法//1. 冒泡排序void BubbleUp(string &str) { int length = str.length(); for (int i = 0; i < length-1; i++) { for (int j = length - 1; j > i; j--) { if (str[j] <.
【自动控制原理】PID控制的初步理解(2) PID控制中三项代表的意义以及系数对响应的影响:依然拿上文的水手的例子做讲解。船长命令水手向东航行。PID 控制系统(时域)水手发现船现在不是向东的,(为了量化)离东方向还差45°,那么他一定会打舵,保证船向东偏移;假如他发现现在根本就是向西航行,那么他一定会抓紧打舵,让舵盘旋转的角度更大。因此可知,比例控制项非常合理。误差大,对应的输出就多——错误多,就要按照错误的量进行纠错。在比例控制的基础上,还需要做出额外的修正(因为只有比例控制会出现稳态误差),例如,水手虽然打舵了,但是..
【自动控制原理】PID控制的初步理解(1) PID名称的含义:Proportion Integration Differentiation。三个单词分别为比例、积分与微分。PID的本质是一种控制系统,因此比例、积分、微分表示的是该控制系统的数学表达式所包含的运算,就像任何一种传递函数表示的那样。PID的来源与形象解释:个人认为,PID控制是一种基于经验与尝试的控制方法,它来源于水手对于船舵的掌握。船指定向东航行,水手首先按照一个方向打舵,双眼观察现在船的航向。当航向与目标的东方向偏离时,水手根据偏移量的具体值,重新打舵,防止船发生严重的偏移。在这
【通信电子电路】第12章 三相电路 1. 三相四线电路日常生活中的供电电路,均为三相四线电路。三相:三个幅值一样,相位相差120°的交流电压源;四线:四根连接电压源与负载之间的线。四根线中,三条流入线,一条流出线。流入线为火线,流出线为地线。火线定义为ABC,地线定义为N相电压:每根火线与地线之间的电压差值;线电压:火线与火线之间的电压差值。居民用电为相电压,即一根火线与一根地线之间的电压差值。2. 三相电路系统(做题)对称三相电压:电压幅值相同,相位角相差120°的电压源。分为正序(abc)与逆序(acb)。对.
【通信电子电路】第12章 三相电路 1. 单相与多相单相是指电源得相位只有一个;多相是指电源得个数不止一个,各自得相位也不同。2. 线路之前学习得线路为两线,现在学习得为四线,表示电源到所有负载的线路的个数。为什么要用多相多线的电力系统进行传输?3. 对称的三相电压电压的幅值相等,相位角依次相差120度三相电压分为正序三相和逆序三相,相序的定义为:电压经过各自最大值的时间次序。三相电压的连接方式:4. 对称负载负载在频域内的幅值和相位均相等,表示为对称的负载。负载的连接方式与电源...
【通信电子电路】交流电路频域分析 频域分析是什么时域是时间作为变量的抽象空间,频域是角频率作为变量的抽象空间。频域分析分为两类:1. 通信电子的向量频域分析(交流电路)。2. 通信信号的傅里叶频域分析(方波,三角波)前者通常用于分析交流电路,后者用于分析信号波。电路中使用向量频域分析做交流电路分析为什么引入频域分析当电路中只有电阻时,可以方便的利用KCL,KVL,Ohm定律对回路进行分析研究,但是当电路中出现电感和电容时,电路系统变为微分方程形式,涉及求解微分方程以及微分方程组,为了求解微分方程组,可能还需要用到其他的变
C++二叉链表的层次遍历 二叉链表可以用递归算法实现先序遍历,中序遍历和后序遍历,也可以利用栈进行先序遍历,中序遍历和后序遍历。同时,二叉链表也可以借助队列实现层次遍历,基本思想如下:1. 创建二叉链表,创建对咧2. 将只想根节点的指针赋值给浮标指针3. 将根节点入队,同时开启循环4. 当队列不为空是,首先出栈,当左子树不为空时,将左结点的数值入栈;当右子树不为空时,将右结点入栈。重复步骤4...
C++非递归算法遍历二叉链表 递归的二叉链表遍历基于类自身函数的自我调用,而二叉链表的非递归操作,基于栈的入栈与弹栈。将中序遍历作为例子:指针访问到结点后,应先记住结点数值入栈,再往左边便利。假如指针为空,弹栈,最后将指针赋值给右子树指针1. 建立浮标指针,指向根节点2. 假如指针不是空,入栈数值,将指针更新为左子树指针3. 当指针为空时,将栈顶元素赋值给新的变量,实现弹栈。4. 将指针赋值给右子树指针上述操作是循环,循环条件:指针不是空,或者栈不为空。...
C++二叉链表遍历理论基础 本节主要研究二叉树中二叉链表的先序遍历原理。基础理论知识有二叉链表的构造原理余递归的思想。根据递归的思想,我们首先应当建立二叉链表的结点类,包括成员变量data域,指向左右子树的指针,并对链表节点类的构造函数进行重载。其次,我们应当建立二叉链表类,包括成员变量指向根节点的头指针,代表二叉树属性的一些参数,和诸多类内函数。由于本节讲述的是先序遍历方法,因此类内函数应当由先序遍历方法函数。又如,本案例涉及对结点数据域数值的打印输出,因此应当另写函数对数据域的值进行打印操作。二叉链表建立好后,可以通过调用
C++二叉树的遍历 遍历:顺着某一条搜索路径,使得二叉树中的每一个结点有且仅有被访问一次,叫做遍历,或者周游。访问的含义非常广泛。可以认为在不破坏原来结构的基础上对结点数值进行取出和修改等。遍历的目的:在规定遍历顺序后,可以将二叉树这种非线性的数据结构转换为线性排列进行处理遍历的意义:二叉树的增删改查均需要遍历。遍历,是二叉树运算的核心。遍历方法:二叉树是一种典型的递归结构,每一个结点内部,均有两个与节点类型相同的指针。因此,我们只要依次遍历二叉树的左子树,根节点和右子树,即可完成整个遍历根据不同的遍历顺序
C++二叉树的链式存储结构_1 二叉树的链式存储结构物理模型:class Bnode {public: int data; Bnode* left_node; Bnode* right_node;};和双链表的定义非常类似。当链二叉树的结点个数为n时,一共有n-1个非空指针域,n+1个空指针域,一共有2n个指针域。链式三叉树,再指针域定义时,多加一个指向双亲结点的指针class TriBiTreenode {public: int data; TriBiTreenode* left_node; T
C++二叉树的存储结构_1 二叉树的顺序存储结构顺序存储即为在计算机内存中开辟一段连续的内存空间用于存放二叉树的信息。对于一个二叉树,将二叉树按照满二叉树的标号方式,从上到下、从左到右、从0开始,依次给二叉树的结点进行标号。标号完成后,按照下标于数据,将其存入数组中。当二叉树不是完全二叉树时,应该先将二叉树写成满二叉树的形式,空的位置不仅要保留空缺位置,还要依次编号。下图中,一共有7个数据,但是应当将上一层的结点和左子树补全,再编号,再存储。否则,无法区分满二叉树与非满二叉树,会混淆。二叉树类的定义//...
C++二叉树性质 性质4:对于一个完全二叉树,当已知其节点个数为n时,该完全二叉树的深度为等于结点个数n取以log2为底的取不大于它的最大整数值+1性质5:结点编号为i时,该节点的双亲编号一定是round(i/2),它的孩子结点的编号一定是2i以2i+1编号相差为1的结点一定位于同一层上。顺去存储二叉树时,可以直接根据下标关系对双亲结点和孩子结点进行操作。...
C++满二叉树和完全二叉树 满二叉树定义:深度为k的二叉树且结点个数为2^k-1的二叉树为满二叉树满二叉树的所有结点均存在。特点:1. 满二叉树中所有层的结点数都是满的2. 叶子结点必须在最低的层上出现满二叉树的标号规则:自根节点开始,自上而下,自左而右依次编号,每一层的结点均存在,并且个数均为最大个数A:该二叉树一共有4层,满二叉树应该具有15个结点,9<15因此不是满二叉树。除此之外,有且仅有数的最后一层等于叶子结点,并且叶子节点必须排列在同一层。因此不是满二叉树因此:在...
C++二分遍历 代码存档#include<iostream>using namespace std;//数组查找的二分遍历法//传入参数:数组本身arr,数组内寻找的元素K,数组长度nint binary(int* arr, int K, int n) { //头下标与尾下标 int front = -1; int rear = n; //当数组不是空的时候进行二分遍历 while (front + 1 != rear) { //找到数组中间下标(中间大) int i = (fr
Matlab计算语音信噪比 function snr = calcu_snr(clean_file,noisy_file)%读取干净语音文件[cl,~]=audioread(clean_file); %读取干净语音信号[ny,~]=audioread(noisy_file); %读取带噪语音信号len=size(ny,1); %计算带噪语音信号长度clean=cl(1:len); %截取与带噪语音信号长度相同的干净语音信号Ps=sum(sum((clean-mean(mean(clean))).^2));%干.
C++打印学生成绩直方图 Pratice problem: As we introduced in the lecture, try to implement a project to finish the task:” Calculate and print out the histogram of the test scores.”.Requirements:1. The number of grades of the scores is 11. A detailed division of the grades can
C++类和对象(1) 题目一定义一个学生类,学生类属性有学生的姓名与学号,学生的类行为有赋值函数与打印信息函数代码实现:#include<iostream>#include<string>using namespace std;class Student {public: string name; int ID; void assign(string name_1, int ID_1) { name = name_1; ID = ID_1; } void pri
C++函数重载 1. 重载的定义:相同函数名,不同参数函数可以在同一个作用域下共存。2. 重载的方法:(1)同一个作用于下。(2)函数的名称相同。(3)函数的参数个数不同,数据类型不同,参数顺序不同。(4)函数的返回值类型不同不可以作为函数重载的前提。测试代码示例:#include<iostream>using namespace std;void func() { cout << "func" << endl;}void func(int a) { cou