自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于Tensorflow的最基本GAN网络模型

【代码】基于Tensorflow的最基本GAN网络模型。

2023-04-07 12:05:40 535 1

原创 Ubuntu系统安装stellarium

ubuntu系统安装stellarium

2022-08-22 10:49:27 258

原创 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] <.

2021-12-20 17:11:55 698

原创 【自动控制原理】PID控制的初步理解(2)

PID控制中三项代表的意义以及系数对响应的影响:依然拿上文的水手的例子做讲解。船长命令水手向东航行。PID 控制系统(时域)水手发现船现在不是向东的,(为了量化)离东方向还差45°,那么他一定会打舵,保证船向东偏移;假如他发现现在根本就是向西航行,那么他一定会抓紧打舵,让舵盘旋转的角度更大。因此可知,比例控制项非常合理。误差大,对应的输出就多——错误多,就要按照错误的量进行纠错。在比例控制的基础上,还需要做出额外的修正(因为只有比例控制会出现稳态误差),例如,水手虽然打舵了,但是..

2021-11-15 20:05:27 1651

原创 【自动控制原理】PID控制的初步理解(1)

PID名称的含义:Proportion Integration Differentiation。三个单词分别为比例、积分与微分。PID的本质是一种控制系统,因此比例、积分、微分表示的是该控制系统的数学表达式所包含的运算,就像任何一种传递函数表示的那样。PID的来源与形象解释:个人认为,PID控制是一种基于经验与尝试的控制方法,它来源于水手对于船舵的掌握。船指定向东航行,水手首先按照一个方向打舵,双眼观察现在船的航向。当航向与目标的东方向偏离时,水手根据偏移量的具体值,重新打舵,防止船发生严重的偏移。在这

2021-11-15 19:47:09 2395

原创 【通信电子电路】第12章 三相电路

1. 三相四线电路日常生活中的供电电路,均为三相四线电路。三相:三个幅值一样,相位相差120°的交流电压源;四线:四根连接电压源与负载之间的线。四根线中,三条流入线,一条流出线。流入线为火线,流出线为地线。火线定义为ABC,地线定义为N相电压:每根火线与地线之间的电压差值;线电压:火线与火线之间的电压差值。居民用电为相电压,即一根火线与一根地线之间的电压差值。2. 三相电路系统(做题)对称三相电压:电压幅值相同,相位角相差120°的电压源。分为正序(abc)与逆序(acb)。对.

2021-11-02 11:02:15 743

原创 【通信电子电路】第12章 三相电路

1. 单相与多相单相是指电源得相位只有一个;多相是指电源得个数不止一个,各自得相位也不同。2. 线路之前学习得线路为两线,现在学习得为四线,表示电源到所有负载的线路的个数。为什么要用多相多线的电力系统进行传输?3. 对称的三相电压电压的幅值相等,相位角依次相差120度三相电压分为正序三相和逆序三相,相序的定义为:电压经过各自最大值的时间次序。三相电压的连接方式:4. 对称负载负载在频域内的幅值和相位均相等,表示为对称的负载。负载的连接方式与电源...

2021-11-01 10:18:20 386

原创 【通信电子电路】第11章 交流电路功率分析

瞬时功率与平均功率最大平均功率传输定理

2021-10-28 10:48:17 1004 2

原创 【通信电子电路】交流电路频域分析

频域分析是什么时域是时间作为变量的抽象空间,频域是角频率作为变量的抽象空间。频域分析分为两类:1. 通信电子的向量频域分析(交流电路)。2. 通信信号的傅里叶频域分析(方波,三角波)前者通常用于分析交流电路,后者用于分析信号波。电路中使用向量频域分析做交流电路分析为什么引入频域分析当电路中只有电阻时,可以方便的利用KCL,KVL,Ohm定律对回路进行分析研究,但是当电路中出现电感和电容时,电路系统变为微分方程形式,涉及求解微分方程以及微分方程组,为了求解微分方程组,可能还需要用到其他的变

2021-10-28 09:40:14 574 1

原创 C++二叉链表的层次遍历

二叉链表可以用递归算法实现先序遍历,中序遍历和后序遍历,也可以利用栈进行先序遍历,中序遍历和后序遍历。同时,二叉链表也可以借助队列实现层次遍历,基本思想如下:1. 创建二叉链表,创建对咧2. 将只想根节点的指针赋值给浮标指针3. 将根节点入队,同时开启循环4. 当队列不为空是,首先出栈,当左子树不为空时,将左结点的数值入栈;当右子树不为空时,将右结点入栈。重复步骤4...

2021-09-10 19:00:06 1012

原创 C++非递归算法遍历二叉链表

递归的二叉链表遍历基于类自身函数的自我调用,而二叉链表的非递归操作,基于栈的入栈与弹栈。将中序遍历作为例子:指针访问到结点后,应先记住结点数值入栈,再往左边便利。假如指针为空,弹栈,最后将指针赋值给右子树指针1. 建立浮标指针,指向根节点2. 假如指针不是空,入栈数值,将指针更新为左子树指针3. 当指针为空时,将栈顶元素赋值给新的变量,实现弹栈。4. 将指针赋值给右子树指针上述操作是循环,循环条件:指针不是空,或者栈不为空。...

2021-09-10 18:41:44 251

原创 C++二叉链表遍历理论基础

本节主要研究二叉树中二叉链表的先序遍历原理。基础理论知识有二叉链表的构造原理余递归的思想。根据递归的思想,我们首先应当建立二叉链表的结点类,包括成员变量data域,指向左右子树的指针,并对链表节点类的构造函数进行重载。其次,我们应当建立二叉链表类,包括成员变量指向根节点的头指针,代表二叉树属性的一些参数,和诸多类内函数。由于本节讲述的是先序遍历方法,因此类内函数应当由先序遍历方法函数。又如,本案例涉及对结点数据域数值的打印输出,因此应当另写函数对数据域的值进行打印操作。二叉链表建立好后,可以通过调用

2021-09-10 18:02:48 257

原创 C++二叉树的遍历

遍历:顺着某一条搜索路径,使得二叉树中的每一个结点有且仅有被访问一次,叫做遍历,或者周游。访问的含义非常广泛。可以认为在不破坏原来结构的基础上对结点数值进行取出和修改等。遍历的目的:在规定遍历顺序后,可以将二叉树这种非线性的数据结构转换为线性排列进行处理遍历的意义:二叉树的增删改查均需要遍历。遍历,是二叉树运算的核心。遍历方法:二叉树是一种典型的递归结构,每一个结点内部,均有两个与节点类型相同的指针。因此,我们只要依次遍历二叉树的左子树,根节点和右子树,即可完成整个遍历根据不同的遍历顺序

2021-09-09 11:50:50 870

原创 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

2021-09-07 20:11:02 263

原创 C++二叉树的存储结构_1

二叉树的顺序存储结构顺序存储即为在计算机内存中开辟一段连续的内存空间用于存放二叉树的信息。对于一个二叉树,将二叉树按照满二叉树的标号方式,从上到下、从左到右、从0开始,依次给二叉树的结点进行标号。标号完成后,按照下标于数据,将其存入数组中。当二叉树不是完全二叉树时,应该先将二叉树写成满二叉树的形式,空的位置不仅要保留空缺位置,还要依次编号。下图中,一共有7个数据,但是应当将上一层的结点和左子树补全,再编号,再存储。否则,无法区分满二叉树与非满二叉树,会混淆。二叉树类的定义//...

2021-09-07 19:54:17 409

原创 C++二叉树性质

性质4:对于一个完全二叉树,当已知其节点个数为n时,该完全二叉树的深度为等于结点个数n取以log2为底的取不大于它的最大整数值+1性质5:结点编号为i时,该节点的双亲编号一定是round(i/2),它的孩子结点的编号一定是2i以2i+1编号相差为1的结点一定位于同一层上。顺去存储二叉树时,可以直接根据下标关系对双亲结点和孩子结点进行操作。...

2021-09-07 19:26:23 279

原创 C++满二叉树和完全二叉树

满二叉树定义:深度为k的二叉树且结点个数为2^k-1的二叉树为满二叉树满二叉树的所有结点均存在。特点:1. 满二叉树中所有层的结点数都是满的2. 叶子结点必须在最低的层上出现满二叉树的标号规则:自根节点开始,自上而下,自左而右依次编号,每一层的结点均存在,并且个数均为最大个数A:该二叉树一共有4层,满二叉树应该具有15个结点,9<15因此不是满二叉树。除此之外,有且仅有数的最后一层等于叶子结点,并且叶子节点必须排列在同一层。因此不是满二叉树因此:在...

2021-09-07 19:18:18 734

原创 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

2021-08-31 20:26:22 227

原创 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));%干.

2021-08-27 16:19:41 2975 1

原创 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

2021-08-17 11:20:59 548 2

原创 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

2021-08-17 10:35:09 106

原创 C++函数重载

1. 重载的定义:相同函数名,不同参数函数可以在同一个作用域下共存。2. 重载的方法:(1)同一个作用于下。(2)函数的名称相同。(3)函数的参数个数不同,数据类型不同,参数顺序不同。(4)函数的返回值类型不同不可以作为函数重载的前提。测试代码示例:#include<iostream>using namespace std;void func() { cout << "func" << endl;}void func(int a) { cou

2021-08-17 09:56:07 89

原创 C++引用(2)

1. 引用的本质: 是一个指针常量int& ref 等价于 int* const p2. 引用的注意事项:(1)必须初始化(2)一旦被赋值,不可以再更改指向代码实现:#include<iostream>using namespace std;int main() { //引用的本质 //引用的不呢之就是指针常量 //指针常量int* const p int a = 10; cout << a << endl; int&

2021-08-16 18:25:25 153

原创 C++引用(1)

1. 引用的基本语法:数据类型 &新变量名=原变量名。通过新变量名可以对原始值进行修改,因为两个名称指向的地址都相同。2. 引用的注意事项:(1)引用必须初始化。(2)引用初始化之后,不可以再改变。(一旦被确定,不可以再修改)3. 引用做函数参数:简化指针,用引用可以实现形参修饰实参。//主函数中函数的调用,传参直接就是原始参数的名称swap(a, b);//交换函数void swap(int& a, int& b){}//注意这里的形参列表...

2021-08-16 10:45:26 1059

原创 C++程序的内存模型(2)

栈区1. 栈区存放的数据:函数形参,局部变量2. 栈区的特点:由编译器分配,程序员无权参与。因此不要返回栈区数据的地址。代码验证:#include<iostream>#include<string>using namespace std;//由于返回值是地址,因此返回值类型是指针int* fun1() {//形参也会放在栈区 //函数内局部变量 int a = 10; //返回局部变量的地址 //局部变量存放在栈区,fun1函数执行完成后,自动清除

2021-08-15 16:48:54 84

原创 C++程序的内存模型(1)

代码区1. 代码区的生成时间:程序形成exe可执行文件之前。2. 代码区存放的内容:CPU需要执行的指令(二进制)3. 代码区的特点:(1)共享特性:即使多次执行程序,执行的内容有且仅有一个。(2)只读特性:程序在运行时,无论如何不会对我的执行命令进行修改。全局区1. 全局区的生成时间:程序形成exe可执行文件之前。2. 全局区的特点:全局区存放的数据的生命周期只由编译器决定。全局区用于存放数据,如下:(1)全局变量(2)静态变量(3)常量:1. 字符串常量。2.

2021-08-15 16:21:56 103

原创 C++冒泡排序结构体数组

#include<iostream>#include<string>using namespace std;struct Hero { string name; int age; string sex;};void printHero(Hero* p,int length) { for (int i = 0; i < length; i++) { cout << p[i].name << " " << p[i].a.

2021-08-15 15:33:53 190 1

原创 C++结构体嵌套循环赋值打印

1. 学生结构体:姓名,分数2. 老师结构体:姓名,学生数组(长度为5)3. 功能:创建老师结构体数组,每个老师单元有一个学生数组,每个学生数组包括姓名和分数,函数1实现对老师和其学生信息的赋值,函数2实现对所有信息的打印#include<iostream>#include<string>#include<ctime>using namespace std;struct Student { string name; int score;};

2021-08-15 12:01:21 1612 1

原创 C++const在结构体中的应用

#include<iostream>#include<string>using namespace std;struct Student { string name; int age; int score;};//地址传递-不复制新的副本,但容易修改原本的数据//在指针前加上const,不可以通过解引用的方式对原始数据进行修改void printstu(const Student* p) { //p->age = 10; cout << .

2021-08-15 11:17:24 1077

原创 C++指针与结构体

#include<iostream>#include<string>using namespace std;//定义结构体struct Student { string name; int age; int score;};int main() { //结构体指针 //创建结构体变量 Student s1 = { "kelly",20,100 }; //通过指针c语言访问结构体 //创建和结构体的类型相同的指针 Student* p = &amp.

2021-08-14 16:53:00 273

原创 C++利用指针和函数进行冒泡排序

#include<iostream>using namespace std;//声明冒泡排序函数void bubble(int* p, int length);void printarray(int* p, int length);int main() { //指针,数组,函数 int arr[10] = { 4,3,6,9,1,2,10,8,7,5 }; //计算数组的长度 int length = sizeof(arr) / sizeof(arr[0]); //调.

2021-08-12 16:44:48 1538

原创 C++指针_5

1. 值传递:基础的函数不涉及指针时,多为值传递。main函数中调用函数中传入的参数为实参,自己定义的函数中传入的参数为形参,在不考虑返回值的情况下,形参数值的改变不会影响到实参数值的改变。如下:#include<iostream>using namespace std;//声明值传递函数void swap(int a, int b);int main() { //值传递:改变函数的形参不会影响到main函数中的实参数值 int a = 3; int b = 4;

2021-08-12 16:22:51 69

原创 C++指针_4

1. 常量指针:形式:const 数据类型* 指针名称;const int* p = &a;'*'代表指针,由于const在*号之前,因此中英文都称之为常量指针。const后面爱着的是int*,因此const关键词修饰的是指针。因此*解引用的操作是不被允许的。即:指针代表的地址可以发生更改,但是不可以通过解引用的方式对指针代表的地址内的数据进行更改。2. 指针常量:形式:数据类型* const 指针名称;int* const p = &a;‘*’代表指针,co

2021-08-12 15:44:57 67

原创 C++指针_3

1. 空指针的定义:指向0的指针为空指针,或者说,指针变量内存放的数据为0(NULL)的指针为空指针。2. 空指针的用途:在岗建立一个指针变量时,并不确定指针的指向位置(不知道变量内存放谁的地址),可以先对指针变量进行初始化,如下:int* p;p = NULL;3. 空指针的注意事项:虽然空指针内存放的数据为NULL,但是程序员无法访问这一段内存,因为这是被编译器占用的。当解引用指针时,无法访问这段空间。#include<iostream>using namespace

2021-08-12 09:50:48 87

原创 C++指针_2

1. 指针的赋值://方法1:int a = 10;int* p;p = &a;//方法2:int* p = &a;2. 指针的大小:#include<iostream>using namespace std;int main() { //指针占有的内存空间 int a = 10; //创建指针变量 int* p; double* q; //另一种指针赋值方法 int* p1 = &a; //不论什么类型的指针,占用的

2021-08-12 09:40:09 67

原创 C++指针_1

1. 指针的概念:指针是一个变量,指针的数值大多代表另一个数据的内存地址。因为有这种特性,指针常常被用来访问一段特定的内存,同时,我们也可以通过指针更改指针指向的内存所包含的数据。2. 指针的定义方式://指针数据类型 * 指针变量名称;int * p;这里需要注意:指针要与指针所指向的数据的数据类型相一致。3. 指针的定义与应用实例:#include<iostream>using namespace std;int main() { //定义整型数

2021-08-11 23:46:56 66

原创 C++冒泡排序

Homework problem: Enter ten numbers randomly and sort by bubble sort. Regarding the bubble sort, you can refer to the following introduction. Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are

2021-08-11 11:14:09 153

原创 C++数组元素逆序排列

#include<iostream>using namespace std;int main() { //元素逆序排列,正好实现关于中心对称反转变换 int arr[5] = { 1,3,2,5,4 }; //其实元素下标位置 int start = 0; //末尾元素下标位置(数组长度)- 1 int end = (sizeof(arr) / sizeof(arr[0]) - 1); //这里注意最好记录一下数组真正的长度,因为后面对end进行加减操作后,end的数.

2021-08-10 23:43:41 4833

原创 C++寻找数组中的最大值

#include<iostream>using namespace std;int main() { //寻找数组中的最大值 int arr[5] = { 300,350,200,250,400 }; //先假定一个最大值,一般都认为是0 int max = 0; //访问数组中的每一个元素,如果这个元素比认定的最大值max还要大,那么更新最大值 for (int i = 0; i < 5; i++) { if (arr[i]>max) { .

2021-08-10 23:11:32 24310 4

原创 Matlab计算BMI数值与健康指标的函数

Homework problem: Write a Matlab function to calculate the body mass index (BMI) with the following function prototype:function [BMI, status] = ComputeBMI(weight_kg, height_cm)where the input weight_kg is the weight measured in kilograms and height_cm

2021-08-10 18:54:50 1562 1

Report of Double-Car Freight Train Problem.zip

连接体加速度问题

2021-06-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除