Lecture1 2[基本语法-函数]

2023-05-16

文章目录

  • 第一部分 c++基础
  • Lecture1 基础
    • 介绍部分
    • 第一个代码及语法基础
      • 1 C++的注释
      • 2 C++中的 main() 函数
      • 3 C++ 的基本 syntax
        • c++ 中的变量和类型:
        • c++ 中的计算优先顺序 Operator Precedence
        • c++ 中的 布尔表达式
        • c++ 中的 control flow
          • 1 条件语句 if
          • 2 for 循环
          • 3 while loops
          • 小练习:
      • 4 C++ include 头文件初步
      • 5 `namespace` 和 `using`
      • 6 用户输入和输出 User Input and Output
        • 1 在终端输出 console output: `cout << << endl;`
        • 2 从终端输入: `cin >>`
        • 3 解决 `cin <<` 方法的局限性:使用 stanford 标准库
  • Lecture 2 函数
    • 函数模板(function prototype)
    • 函数:c++内置数学函数
    • 函数:默认参数
    • 函数:参数 value semantics
    • 函数:reference semantics
      • 我们什么时候使用 reference 声明变量
      • 我们什么时候不使用 reference 声明变量
    • 实例

课程网站:https://web.stanford.edu/class/archive/cs/cs106b/cs106b.1208/schedule

说明:可以在下面的网站找到一些doc文件 http://cs106b.stanford.edu 2020

第一部分 c++基础

课件是官网上的,但是看的视频是bilibili上的18年的

同步测试

Lecture1 基础

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RmVPyhxp-1610276594369)(https://i.loli.net/2020/07/04/uwa2vRqcVrdWnTZ.png)]

介绍部分

c++是编译型语言(compiled vs interpreted):这意味着运行c++程序之前必须编译成机器码

介绍:安装 Qt Creator

[Qt 安装]https://web.stanford.edu/class/cs106b/qt/

在每次作业都会给出 Qt Creator starter project files

介绍:课程安排

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AaNbIcug-1610276594371)(https://i.loli.net/2020/06/28/xRoh82NvTSHAkYX.png)]

第一个代码及语法基础

打开第一课的 HelloWorld.pro

/*
* hello.cpp
* This program prints a welcome message to the user.
*/
#include <iostream>
using namespace std;

int main(){
    cout << "Hello, world!" << endl;
    return 0
}

学习:

  • comment 的方法
  • #include 导入一些库
  • 将这个文件保存为后缀为 .cpp 的文件

1 C++的注释

  • 单行注释
  • 多行注释

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HtPvZNA-1610276594372)(https://i.loli.net/2021/01/04/LiTvloVScGtZdNF.png)]

  • c++ 的源代码(source code) 放在 .cpp 文件夹, 额外的声明文件可以放在 .h文件中
  • 源代码被编译成 binary object .o 文件
  • 与Java不同,c++可执行文件是 platform-dependent
image-20200627150739241

我们也可以简单比较以下C++和Python程序的区别:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tvNY8NjG-1610276594375)(https://i.loli.net/2020/07/04/YXncOxA57VKjpst.png)]

2 C++中的 main() 函数

  • main() 函数一般来说是一个程序的起点,
  • main() 函数返回一个正数给操作系统:0 代表成功,非0代表失败
image-20200627150810596

3 C++ 的基本 syntax

image-20200627151019942

c++ 中的变量和类型:

使用一个变量之前必须声明它的类型

int x = 42 + 7 * -5;
double po = 3.14159;
char c = 'Q';
bool b = true;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DjwfaMtt-1610276594377)(https://i.loli.net/2021/01/04/BCJWbXuirFkgYwf.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ukozqYvW-1610276594378)(https://i.loli.net/2021/01/04/lumQ72dRsJpvqLH.png)]

c++ 中的计算优先顺序 Operator Precedence

https://en.cppreference.com/w/cpp/language/operator_precedence

c++ 中的 布尔表达式

image-20200704142430044

c++ 中的 control flow

1 条件语句 if

image-20200704142611309

image-20200704142802913

2 for 循环

image-20200704143131174

  1. initializationStatement: 初始化一个变量。eg int i = 0
  2. testExpression: 首先对 testExpression 求值,然后在每次运行循环后求此表达式,如果为 true,则循环继续进行下一次迭代, e.g i < 3
  3. updateStatement: updateStatement 发生在每个循环之后,``testExpression计算之前 e.gi++`

image-20200704143426039

for (int i = 0; i < 10; i++){
    if (i % 2 == 0){
        x += i;
    }
}

补充:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WnJlLxf9-1610276594383)(https://i.loli.net/2020/07/05/rXYeLbounCHtQcq.png)]

第三点 如果没有写 increment 则 i 会一直为0(如果初始化 int i =0 的话)

for 循环的第二种写法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C0a8SPT1-1610276594383)(https://i.loli.net/2020/07/05/g8cqlBWhwxsHNI2.png)]

  • 注变量的类型根据范围内的类型来定或者使用 auto
  • 注意如果对list中的元素进行改变,变量使用reference的类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GW0w3i6d-1610276594384)(https://i.loli.net/2020/07/05/LMYyONRqE321nHx.png)]

3 while loops

image-20200704142843748

while (x > 0 && c == 'Q' || b){
    x = x / 2;
    if (x == 42){
        return 0;
    }
}
小练习:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dQLo1YMe-1610276594385)(https://i.loli.net/2021/01/04/wQrhZz2odgil1PS.png)]

#inclued <iostream>
using namespace std;

int main(){
    /* TODO */
    for (int i = 10; i > 0 ; i--){
        cout << i << endl;
    }
    cout << "Liftoff" << endl;
}

4 C++ include 头文件初步

  1. <> 来表示包含C++系统自带的头文件
  2. “.h” 表示包含本地头文件(注意使用双引号)
image-20200627151459924

5 namespaceusing

  1. 命名空间(namespace)是指范围标识符 (scope identifiers ):
    • 帮助避免使用相同名字的项的冲突
    • c++控制台的 I/O对象的命名空间是 std
  2. 在代码中使用例如:using namespace std – 在全局范围内使用
  3. namespace::identifier:若没有 using 声明,你通过 precede 这个 symbol with 它的 namespace 名即 :: 符号,可以 access 一个 namespace 的 symbols
image-20200627151815645

6 用户输入和输出 User Input and Output

1 在终端输出 console output: cout << << endl;

  • endl 表示 end of line

  • 类似 \n : 问题是如果我想换行应该怎么做?

    写了 endl 不写分号继续使用 << 即可

image-20200704140841225

注意没有 endl 的情况。

2 从终端输入: cin >>

不鼓励这种方式读取输入

cin << 从终端读取用户输入存在的问题,如图所示:

  • 只能一次读取一个word

  • 如果输入的不是一个 int 而是一串字符串会怎么样呢?

    image-20200627153007619
  • 如果输入的不是 int 类型而是浮点数类型会怎样?

    image-20200627153058887

3 解决 cin << 方法的局限性:使用 stanford 标准库

我们建议使用另一种方法 reading user input:使用 Standford library 的一个函数:getLine()

getLine() 函数接收一个参数,该参数是显示给用户的提示. 用户按下 “ Enter / Return” 键提交答案后,该函数将返回用户在控制台中键入的值,其他读取用户输入的函数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oed62n4M-1610276594386)(https://i.loli.net/2020/06/28/ASBHReD5WKp1nri.png)]

使用表格解释下:

请在程序前包含头文件(第三方库)#include “simpio.h”
函数名描述
getInteger("prompt")不断从终端读取直到读取一个整数
getReal("prompt")不断从终端读取直到读取到一个实数(double)
getLine("prompt")读取返回一行(回车)文本
getYesOrNo("prompt")
getYesOrNo("prompt","y","n")
通过输入“yes”or“no”函数返回布尔值
(或者指定输入值例如 “y” or “n” )

应用的例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-keYoxbxt-1610276594387)(https://i.loli.net/2020/06/28/StZX7p9kzqC1QRB.png)]

如果你 #include “simpio.h”将可以使用上述读取函数

image-20200627153447004

注意一点,如果你没有 #include <iostream> 包含系统的这个库,你就不能使用 cout<< 输出

image-20200627153556558 image-20200627153612352

下一节: how to write a funtion?

函数写在调用之后将会报错


Lecture 2 函数

image-20200627162327717

函数模板(function prototype)

returnType functionName(varType parameter1, varType parameter2, ...);

函数参数:看起来非常像变量声明语句,你可以认为 参数 是特殊的属于函数的* 局部变量

image-20200704141745082

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2TqdcbKh-1610276594388)(https://i.loli.net/2021/01/04/fB26wUPxeKb43Yt.png)]

关于 parameters 和 arguments 的定义区别:

  • parameters: one or more variables that your function expects as inputs
  • arguments: The values passed into your function and assigned to its parameter variables

关于函数的返回:

  • 函数名前面是函数返回的类型,如果想要定义一个没有返回值的函数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xn9GXgKN-1610276594389)(https://i.loli.net/2021/01/04/oLDAIC4XW7cU6fm.png)]

举例:

double average(double a, double b){
    double sum = a + b;
    return sum / 2;
}   

int main(){
    double mid = average(10.6, 7.3);
    cout << mid << endl;
    return 0;
}

关于函数的顺序问题(declaration order matters):

  • 我首先写了一个函数,名为 void song() ,然后我在后面的程序里调用了两次
image-20200627162445628

但是如果把 void song() 剪切到 main() 函数下方,程序编译的时候将会报错,我们可以总是在 main() 之前定义函数,但是通常我们会先写 main() 函数,再写其中需要的函数,解决方法是:

  1. 把被调用的函数写在主函数前面

  2. 使用 function prototypes

    在主函数之前,在程序顶部声明一个(不包含主体)的函数,相当于告诉程序我后面一定会写这个函数。这称为: function prototype 例如

image-20200627162838114

函数:c++内置数学函数

有一些已经存在的的函数是可以直接调用的,比如 数学函数(注意头文件 include <cmath>

函数名描述(返回)
abs(value)绝对值
ceil(value)向上圆整
floor(value)向下圆整
log10(value)取以10为底的对数
max(value1,value2)
min(value1,value2)
两个值中较大的值
两个值中较小的值
pow(base, exp)取指数
round(value)最近的圆整数
sqrt(value)取2次根号
sin(value)
cos(value)
tan(value)
正弦
余弦
正切
  • 使用Stanfor的 “gmath.h” 获得更多数学函数

函数:默认参数

关于函数定义时的默认参数:在定义函数是给定默认参数可以使这个参数变成可选参数—— 在用户没有给参数时,调用函数将会使用默认参数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntheqziG-1610276594390)(https://i.loli.net/2021/01/04/AWRlZC43jxO2izS.png)]

函数:参数 value semantics

学习概念:

  • value semantics
  • reference semantic

value semantics: 当一个 parameter (by value)被传入函数时(意思就是调用函数时),用新的变量存储了这个传入值的副本 —— 意味着被调用的函数使用什么参数表示都不影响函数的结果,也不影响被传递变量本身

image-20200705204123536

例如

// c++:
#include<iostream>
using namespace std;

int doubleValue(int x){
    x *= 2;
    return x;
}

int main(){
    int myValue = 5;
    int result = doubleValue(myValue); //1
    
    cout << "myValue: " << myValue << " ";
    cout << "result: " << resule << endl;
}
myValue: 5 resultL 10

这样的结果输出的原因是:

  • parameter x by value=5 被传递给 函数 doubleValue —— 1
  • 意味着 variable x 是 a copy of the variable(``myValue=5`)
    在函数内改变这个变量是不会改变 calling function 的值的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uDMpe6vL-1610276594391)(https://i.loli.net/2021/01/04/Otlz7Cqg2xphRi4.png)]

再看一个例子 —— swap(int a, int b) 两个整数的值的交换

void swap(int a, int b){
    int temp = a;
    a = b;
    b = temp
}   

int main(){
    int x = 17;
    int y = 35;
    sway(x, y);
    cout << x << "," << y << endl; 
    return 0
}
17,35
  • 但在下面的主函数中,我们调用了这个函数并输出 x 和 y 结果值没有变,为什么?

  • 因为交换的的时变量的值的复制,而**变量(指xy)**本身的值并没有改变

函数:reference semantics

reference semantics/reference parameters:当你在声明一个变量时,在它的类型后面加&,那么它将指向变量存储的同一位置。那么当一个函数调用这个 参数/值 时,变量不是这个值的复制,而是这个值的reference,这意味着对这个变量的改变也是对原始值的改变

image-20200705204226151

  • Regular variables – 常规变量: 看做是 a named container storing a value.

  • References (例如 double& weight_ref)-- : 只是看做一个 box 指向已经存在的变量 a box that just refers to an existing variable.

    References 可以有 names and types, 就像常规变量一样(但不改变它的本质)image-20200705204514574

    理解什么叫指向变量本质(-内存)

    image-20200705204619837

还是上面提到的相同的例子:

void swap(int& a, int& b){
    int temp = a;
    a = b;
    b = temp
}   

int main(){
    int x = 17;
    int y = 35;
    sway(x, y);
    cout << x << "," << y << endl; 
    return 0
}
//值交换了
35, 17

在 c++ 中每一种 data type 都可以被 passed 作为 value semantics 或者 reference semantics

  • 相较于调用一个函数然后 return something,c++ 使用 reference的方法 也可以使函数 “return something”
  • 当我们使用任何 data type 的时候,我们都要决定是要 copy it 还是 share it

讨论:

我们什么时候使用 reference 声明变量

  1. To allow helper functions to edit data structures in other functions – 当我们允许helper函数在其他函数中编辑数据结构时
    • But why don’t we just return a copy of the data structure? – 为什么不在其他函数中返回一个副本呢?
  2. 避免在内存中生成大型数据结构的新副本
    • Passing data structures by reference makes your code more efficient!
  3. reference 还提供了针对多个返回值multiple return values)的解决方法
    • 在你的函数中可以有一个返回值,同时也可以在这个函数中直接编辑作为ref 参数传入的a Vector object 。这样就让你的函数实现了多个返回值:return both the vector and the actual return value!
    • 你的函数可以 take in multiple pieces of information by reference 并修改它们。通过这种方式,你可以同时 “return” 修改后的Vector和一些关于结构如何修改的辅助信息。这就好像你的函数正在 向调用它的函数 返回了两块更新过的信息

我们什么时候不使用 reference 声明变量

  1. 如果我们始终使用reference,则函数都将能够编辑彼此的变量,并且作用域scoping会造成混淆!

    • 这也将使bugs的可能性更大。 变量的意外更改可能会在各个函数之间存在。
  2. 如果数据本身很小(即按值复制的成本很低),那么我们就不需要使用reference。

  3. 注意:如果要通过 reference 传递参数,则不能提供literal作为参数。

    image-20200705205722048

    没懂这个意思 – 见代码

    void tripleWeight(double& weight_ref){
        weight_ref *= 3;
    }
    
    int main(){
        double weight = 1.06;
        tripleWeight(weight);
        // tripleWeight(1.06) 是错误的因为没有变量-没有share内存地址?
        cout << weight << endl; //3.18
    }
    

实例

案例1:这个函数想实现你可以约会的人的年龄范围,这个函数必须要返回:

  • minimum age;maximum age
image-20200629233849091

输出为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2TovZNP-1610276594395)(https://i.loli.net/2020/06/29/QSZN9wqDxF1p4X7.png)]

则你可以使用两个 reference parameters – int& min int& max,这样在我们调用函数 datingRange() 将修改这两个参数。

你可以看到上面 main 函数 中 datingRange(48, young,old) 中的参数 young h和 old 没有指定任何值,他们实际上存储了 计算出的 minmax 的值

当你只需要返回一个输出, return 语句是不错的选择,但如果有多个 return 的话 reference parameters 是不错的选择

案例2 写一个c++函数,求二次函数的根

  1. 我们的函数应该accept什么参数?
  2. 他应该 return 什么?
  3. 什么 parameters 应该以 value 传递?
  4. 什么 parameters 应该以 reference 传递?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WebrfxNs-1610276594396)(https://i.loli.net/2020/06/28/hZ9z5WvLRDi1c3w.png)]

如果我不需要 return anything

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-twe77Q5Z-1610276594396)(https://i.loli.net/2020/06/28/UXCd79uR1Qkl6Ly.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mYjkJSzR-1610276594397)(https://i.loli.net/2020/06/28/oEjAMBbQ8xVnpz3.png)]

这里可能有问题:为什么不实用 cout<<打印出输出

  • 依个人习惯,如果print,你在 console 可以看到,但是他们随后会 gone,但是当这些参与其它的calculate的时候不能简单的打印出来。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CjsDZrsI-1610276594398)(https://i.loli.net/2020/06/28/UW84JgzymF2CvqD.png)]

输出:

The roots are 4 and -1

在主函数中:我想要 声明一些变量来存储 roots(22行)我不需要给它任何的值,然后我们调用这个函数 pass in a b c 的值。

问题,为啥不把 a b c 也作为 reference parameters ?

  • 我们不准备改变这几个参数的值,我们不一定想要和别人 share anything。

一些错误的尝试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qPwCe1yH-1610276594398)(https://i.loli.net/2020/06/29/hEmr6N73xVyKvAI.png)]

这就是上面提到的对于reference 参数不能使用literal传入参数 你必须pass a place 存放 这个double value

如果你想 pass in 一个几百行的数组一般使用 reference parameters 因为 使用 copy 将会占用很大的 memory空间

附录:关于函数的组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K6LhST1i-1610276594399)(https://i.loli.net/2020/06/29/UBFyuvHVa4JM71w.png)]

查看手册看一些函数编写的例子,总结 compose 和 decompose 的问题

的calculate的时候不能简单的打印出来。

[外链图片转存中…(img-CjsDZrsI-1610276594398)]

输出:

The roots are 4 and -1

在主函数中:我想要 声明一些变量来存储 roots(22行)我不需要给它任何的值,然后我们调用这个函数 pass in a b c 的值。

问题,为啥不把 a b c 也作为 reference parameters ?

  • 我们不准备改变这几个参数的值,我们不一定想要和别人 share anything。

一些错误的尝试

[外链图片转存中…(img-qPwCe1yH-1610276594398)]

这就是上面提到的对于reference 参数不能使用literal传入参数 你必须pass a place 存放 这个double value

如果你想 pass in 一个几百行的数组一般使用 reference parameters 因为 使用 copy 将会占用很大的 memory空间

附录:关于函数的组成

[外链图片转存中…(img-K6LhST1i-1610276594399)]

查看手册看一些函数编写的例子,总结 compose 和 decompose 的问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lecture1 2[基本语法-函数] 的相关文章

  • 虚拟化与docker基础

    文章目录 一 虚拟化1 虚拟化概述2 虚拟化的功能3 虚拟化的三种模式4 容器与虚拟化 二 Docker1 容器概述2 Docker概述3 Docker的设计宗旨4 容器与虚拟机的区别5 容器在内核中支持两种重要的技术6 Docker核心概
  • Docker容器网络模式与数据管理

    文章目录 一 Docker容器操作1 容器创建2 查看容器的运行状态3 启动容器4 创建并开启容器5 终止容器运行6 容器的进入7 复制文件到容器中 宿主机中8 容器的导出与导入9 删除容器 二 Docker网络1 Docker网络实现原理
  • docker镜像的创建与dockerfile

    文章目录 一 docker镜像的创建1 创建镜像的方法2 基于现有镜像创建3 基于本地模板创建4 基于dockerfile创建 二 Dockerfile1 概述2 Dockerfile结构3 Dockerfile镜像结构的分层4 Docke
  • matlab中值滤波实现

    中值滤波是一种典型的非线性滤波 xff0c 是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术 xff0c 基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值 xff0c 让周围的像素值接近真实的值从而消除孤立的噪声点 该方
  • 程序员的情人节

    今天是一个好的节日 xff0c 七夕呀 xff01 程序是最好的女朋友 xff0c 它是不会骗你的 它偶尔会发些小的情绪 只是你没有懂它
  • stm32-Hardfault及内存溢出的查找方法

    STM32内存结构 1 要点 1 1 两种存储类型 RAM 和 Flash RAM可读可写 xff0c 在STM32的内存结构上 xff0c RAM地址段分布 0x2000 0000 0x2000 0000 43 RAM size Flas
  • raylib部分源代码功能解读

    官网 https www raylib com https github com raysan5 raylib 我根据自己的需求裁剪了多余功能后的代码 xff1a https gitee com xd15zhn raylib https g
  • 无量纲处理、量纲变换与实时仿真理论

    基本原理 万有引力公式 d 2 r
  • 局域网windows平台下时间同步

    最近单位出现很多应为系统时间不统一造成的问题 xff0c 如 客户机时间与服务器时间不同步 xff0c 而客户机使用软件是读取本机时间上传服务器 xff0c 这样就会造成排序错误 每次开机修改很繁琐 我就想到了在局域网内假设时间服务器的想法
  • 水下潜航器的建模与控制

    线性系统理论大作业 待完成 题目 水下潜器模型 xff0c 可能是潜艇或者鱼雷等对象 一个主推进螺旋桨 xff0c 前后两对水平陀翼 xff0c 后面一对垂直陀翼 潜器前进过程中 xff0c 通过调节助推进螺旋桨推力 xff0c 以及三对陀
  • 演化博弈、复制动态方程与仿真

    本文只整理和总结一下我的理解 xff0c 文末列出了可供参考的更详细完整的资料 建议先看参考资料 1 xff08 博弈论公开课 xff09 的博弈论课程 xff0c 可以直接从第11讲开始看 参考链接 2 是关于演化博弈非常经典的一本书 参
  • 演化博弈方法用于多智能体系统最优资源分配

    演化博弈方法用于多智能体系统最优资源分配 Evolutionary game theoretic approach for optimal resource allocation in multi agent systems 论文复现见 论
  • [论文复现]演化博弈方法用于多智能体系统最优资源分配

    原文 演化博弈方法用于多智能体系统最优资源分配 CSDN博客 https ieeexplore ieee org document 8243778 问题描述 有2种资源分配给6个个体 xff0c 2种资源的总量分别为 y 1 61 545
  • 基于博弈学习的分布式卫星任务规划

    基于博弈学习的分布式卫星任务规划 Distributed Satellite Mission Planning via Learning in Games 摘要 对地观测卫星群的任务规划是一个复杂的问题 xff0c 它提出了重大的理论和技术
  • 多星分布式任务分配中的博弈自组织

    多星分布式任务分配中的博弈自组织 Game theoretic self organization in multi satellite distributed task allocation 论文复现见 论文复现 多星分布式任务分配中的博
  • 自用的矩阵运算库zhnmat使用说明

    自用的矩阵运算库zhnmat使用说明 包含两个主要类 xff1a Mat和Vector3d xff0c 可以用于一些简单的矩阵和三维向量场景 xff0c 代码较简单 xff0c 没有任何性能优化 xff0c 可用于学习参考 代码仓库 htt
  • 非线性系统的反馈线性化

    仿射非线性或非仿射非线性指对输入是否是线性的 例如 xff0c 系统能够写成 x 61 f x
  • 基于特征模型的全系数自适应控制

    摘要 xff1a 首先推导了全系数和等于1的证明过程 xff0c 分析了等效时间常数的概念 xff0c 然后推导了递推最小二乘公式并用于参数辨识的方法 xff0c 最后给几个仿真的例子 全系数之和等于1 被控对象用微分方程 y n
  • raylib一些示例代码

    摘要 xff1a 几种相机视角 3D预览图视角 xff1a 鼠标拖动 xff0c 滚轮缩放 只能沿着中心点 第一视角 xff1a WSAD分别控制视角的前后左右移动 xff0c EQ分别控制上下移动 xff0c 滚轮控制移动速度 画正方体线
  • gnome session 中的开机启动程序配置文件

    我找了很久才找到的 xff1a 管理员状态下 xff1a linux Blue home library config autostart ls gnome terminal desktop stardict desktop 我开机启动的两

随机推荐