总和最大区间问题
总和最大区间问题前言最近在看从这位大佬借的 《计算之魂》这本书,感觉光看书也就图一乐,看完仍旧是脑袋空空,还是得敲敲代码才能记得牢。
问题描述给定一个实数序列,设计一个最有效的算法,找到一个总和最大的区间。
三重循环方法123456789101112131415161718192021222324252627result TripleLoop(double*p, int length){ double max = 0; int start = 0, end = 0; for (int i = 0; i < length; i++) { for (int j = i; j < length; j++) { double temp = 0; for (int k = i; k < j; k++) { temp = temp + *(p + k); } if (temp > max) { max = temp; start = i; end = j- ...
ESP32自动下载电路分析
ESP32自动下载电路分析前言最近画了块 ESP32 的板子,焊了两块,一块 RESET 有问题,一块 IO0 有问题,导致下载的时候得手动跳线,很是麻烦,于是想搞一下自动下载电路。
硬件原理图分析自动下载电路图(RST应为RTS)
串口流控机制
DTR: Data Terminal Ready,数据终端准备好,低有效
RTS:Request To Send,请求发送,低有效
逻辑关系
ESP32系统启动模式
管脚
默认
SPI Flash 启动模式
下载启动模式
GPIO0
上拉
1
0
GPIO2
下拉
无关项
0
EN
高有效
无关项
无关项
硬件电路逻辑
DTR
RTS
EN
IO0
0
0
1
1
0
1
1
0
1
0
0
1
1
1
1
1
总结当 DTR 和 RTS 同时为 0 或者同时为 1 时,三极管 Q1 和 Q2 均为截止状态,此时 EN 和 IO0 的状态由其他电路决定(内部/外部上拉电阻)。当 DTR 和 RTS 不同时,EN = RTS, IO0 = DTR。要进入下 ...
灰度投影法视频稳像
灰度投影法视频稳像前言做毕设时处理的视频有较大的抖动,影响数据分析,于是查了一下视频消抖的相关资料,准备简单实现一下。
原理视频发生抖动时的最显著特征就是帧与帧之间会发生整体的位移,检测出位移之后再通过进一步的逻辑判定视频是否产生抖动,因此基本上视频的抖动都是围绕着如何检测出这个位移进行的。
检测方案
光流法:光流是空间运动物体在观察成像平面上的像素运动的瞬时速度。光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。由于变化的光线会被错误地识别为光流, 因此该方法对光线敏感, 从而会影响到识别效果。光流法比较耗费时间、计算复杂性大,并且抗噪声的能力很差, 在对实时性要求苛刻的情况下并不适用。
块匹配法: 基于块的运动估计,基本思想是将图像序列的每一帧分成许多互不重叠的块,并认为块内所有像素的位移量都相同,然后对每个宏块到参考帧某一给定特定搜索范围内根据一定的块匹配准则找出与当前块最相似的块,即匹配块,匹配块与当前块的相对位移即为运动矢量。块匹配法的性能取决于:块尺寸的大小,匹配准则以及 ...
Failed to load OpenH264 library
Failed to load OpenH264 library在 OpenCV 中把图片合成视频时报错:Failed to load OpenH264 library: openh264-1.8.0-win64.dll Please check environment and/or download
解决方法去官网下载对应的包。官网地址找到安装路径,我的路径是 D:\OpenCV\opencv\build\x64\vc15\bin ,把下载的压缩包解压放到该目录下即可正常运行。
仿真演示导弹击落飞行目标
仿真演示导弹击落飞行目标参数限制条件
飞行器目标可设定高度5-20km,飞行速度400-800m/s,速度大小不变;但可在飞行水平面机动,机动转向最大速度为0.1rad/s;
导弹初速800m/s,风阻f=-bV, b=0.02m,m为导弹质量;重力加速度9.81m/s^2;
导弹点火提供前进方向推进力,单次推进可持续2s:f=ma, a=100m/s^2;最多可以提供3次点火推进;
导弹基地雷达感知范围40km,飞行器感知导弹范围为20km,导弹进入该范围即启动机动规避;
飞行目标可以在飞行平面转向,转向最大速度为0.1rad/s;不考虑飞行目标垂直方向机动。
导弹算法部分导引律导引律是用来引导飞行器到目的点或与目标相遇的算法。在本项目中,导弹的导引律使用了比例导引法,其核心思想是导弹飞行过程中,导弹速度向量的转动角速度与目标视线的转动角速度成比例。比例导引法导引关系式:$$\frac{d\sigma}{dt} - K\frac{dq}{dt} = 0$$核心实现代码如下: ...
笔记本无电池锁功耗
8b964abdcbe4167494dfe5c8bfb76b0869e90686022ef342a659427b57a83d18b4a17b9e7e003f927a8c5053bf96f23fe92221124f44ceb05524e52735f837326f910a0177047f7f267a940690da31523235923eee987004822b06c649fa0fa04a857b775bd645f642da1c1e09b7a8aa94d539521627820d995a9c17a6bf824f111e8ead96b6bca321a650ad75a055e21f3723619697487a86734e5eb30a19afdc84fcf7e29053b65fcfe38f8bb12f47c7b9f5b4e57b429995c3923fe2c51cfe7c296346eec4e4ee466c2f774efe4aa537718bb4b24362f7123bff75cc3974b2888b84b0f67fdbbd99867ea15e91c760b61e66c0904e8590c ...
笔记本自动关机故障
8b964abdcbe4167494dfe5c8bfb76b0869e90686022ef342a659427b57a83d1865430694b08a4f463c466ad692f1f9fa475d96b5695dd67425b401891094ad3f7dd8d33f12b99f3ec918aa636eda352cb53d3642b1dcca5cf415dfca5109ba688f002a9a094f2d79955b902af3f9bb994d474bc77014d481ab7074d09ec9acfeab366d5fc41bbd6881f5099592ba61c86dd59b8bdaa6e4b40673c5a8621288b9ac06c8a9795298d1b182ebb0d45a2dd7247c67ee8ed648d674efc0a1d4ea6abebb7e60577f90d57b3bb1f4a0aea312b397ea3616bf0e93db6173588595e324ef4b214ef4ca36af63fee7f8b704d7d05928de00e5670247611 ...
轨迹规划
轨迹规划介绍最近在搞大学的最后一门课设,其中一个项目内容是“仿真演示导弹击落飞行目标的过程”,要为地对空导弹设计追踪算法,为飞行目标设计机动规避算法并且进行对抗。其中飞行器的的参数如下:
高度5-20km
飞行速度400-800m/s,速度大小不变
机动转向最大速度为0.1rad/s
不考虑飞行目标垂直方向机动
飞机规避导弹按照最大角速度转向时,因为速度大小不变,就相当于一个匀速圆周运动,可以用物理方法或几何方法来实现画圆。
几何方法当初想使用几何方法其实是对条件理解错了😂,以为机动转向最大速度是飞行器绕外部一点旋转的角速度,查了资料才发觉其实应该是偏航角速度。但无论如何,用几何方法模拟圆周运动还是很简单的。照着下面公式代入就行。
$$x_1 = x_0 + r * cos(\alpha)$$$$y_1 = y_0 + r * sin(\alpha)$$
物理方法由于不考虑飞行目标垂直方向机动,只在二维平面上运动,所以只用 x、y 两个轴就可以表示飞行器的坐标。由于飞机的转向速度受限,用 $\theta$ 来表示飞行器的速度方向,则其运 ...
链接库
链接库库文件库文件中每个目标文件存储的代码,并非完整的程序,而是一个个实用的功能模块。例如,C 语言库文件提供有大量的函数(如 scanf()、printf()、strlen() 等),C++ 库文件不仅提供有使用的函数,还有大量事先设计好的类(如 string 字符串类)。库文件的产生,极大的提高了程序员的开发效率,因为很多功能根本不需要从 0 开发,直接调取包含该功能的库文件即可。并且,库文件的调用方法也很简单,以 C 语言中的 printf() 输出函数为例,程序中只需引入 <stdio.h> 头文件,即可调用 printf() 函数。头文件和库文件最大的区别在于:
头文件只存储变量、函数或者类等这些功能模块的声明部分;
库文件才负责存储各模块具体的实现部分;
头文件和库文件相结合的访问机制,最大的好处在于,有时候我们只想让别人使用自己实现的功能,并不想公开实现功能的源码,就可以将其制作为库文件,这样用户获取到的是二进制文件,而头文件又只包含声明部分,这样就实现了“将源码隐藏起来”的目的,且不会影响用户使用。库文件只是一个统称,代指的是一类压缩包,它们都包含有功能 ...
gcc & python
gcc & python报错python 调用 dll 和 so 文件失败。报错内容:OSError: [WinError 193] %1 不是有效的 Win32 应用程序
解决生成的 dll 是32位,环境的 python 是64位。Anaconda 重新配置环境解决问题。
Anaconda 32位 python 环境配置
创建新的虚拟环境
切换到要修改的环境下
修改配置123set CONDA_FORCE_32BIT=1conda activate new_env_win32conda config --env --set subdir win-32
gcc使用在桌面上创建一个 add.c 文件文件内容如下所示:
12345678#include <stdio.h>int my_add(int a,int b){ int temp; temp = a + b; return temp;}
然后打开cmd切换到桌面目录
12345cd .\desktop生成 sogcc add.c -shared -o add.so ...