问卷星自动答题脚本
项目链接:https://github.com/VGDXHan/Automatic-Questionnaire_Script_With_DeepSeek 1 方法 1:基于逻辑判断 优点:可以得到满分答案 局限:只适用单选题且题目不从题库随机抽取(否则状态空间很大,很难收敛) 1.1 网页交互部分通过 playwright 与网页交互、获取网页上的数据 安装1234conda config --add channels conda-forgeconda config --add channels microsoftconda install playwrightplaywright install 同步模式与异步模式的区别 同步模式:依赖多线程(资源开销大),基于线程阻塞,每一步操作等待完成后再继续执行 异步模式:单线程高效处理多任务(协程切换成本低),基于协程,非阻塞执行 同步模式使用方法1from playwright.sync_api import sync_playwright 123456789def open_questionaire(self, url:...
四个向量子空间
基可以线性表示一个空间内的所有向量,可以体现空间的维度 基必须是线性无关的 什么是线性无关?为什么要线性无关? 假如二维空间有这样一组向量: 那么显然,这两组向量并不能表示二维空间的所有向量,它只能表示一维空间 同理,如果三维空间要能够表示三维内的所有向量,第三个向量就不能在前两个向量构成的平面内,否则也会丢失一个维度 二维空间内两向量共线可以表示为:$a_1=\lambda a_2$ 三维空间第三个向量在前两个向量的平面内可以表示为:$a_3=\lambda_1 a_1+\lambda_2 a_2$ 向量组线性无关可以理解为任何一个向量都不能被其余向量线性表示,反之则为线性相关 向量的基可以表示一个空间的所有向量,体现空间维度,我们要讨论某个空间其实就是找出这个空间的基,由于基要求是线性无关的,所以先要讨论空间向量之间的线性相关性,如果有一个向量能够被其他向量表示,它就是多余的,不能作为基 列空间 (Column...
用矩阵求解线性方程组
求出一个线性方程组的解是解决实际问题的关键,在用矩阵表示了线性方程组的一些操作后,希望矩阵能够用于求解线性方程组,而求解线性方程组的常用方法之一就是消元法,所以接下来探讨如何用矩阵表达线性方程组的消元过程 1 用矩阵表示线性方程组的消元法比如有这样一个方程组: \begin{cases}x+2y+z=2\\3x+8y+z=12\\0x+4y+z=2\end{cases}消元法本质消去的是系数,元消失了是因为系数为 0...
矩阵四则运算的含义——线性方程组为例
本篇文章将从用矩阵抽象线性方程组出发,逐步将矩阵与线性方程组中的操作对应,并探讨矩阵求解线性方程组的逻辑,其中有同济线代教材、MIT 线性代数课程的看法,还有不少是个人的理解,希望对各位有帮助,同时也希望各位看到有不对的地方能够多多指教。 假如有一个方程组: \begin{cases}3x_{1}+4x_{2}=y_{1}\\4x_1+3x_{2}=y_{2}\end{cases}想让它简洁一些,写的像表格一样,就有了矩阵形式的表达: \begin{bmatrix}3&4\\4&3\end{bmatrix}\begin{bmatrix}x_{1}\\x_{2}\end{bmatrix}=\begin{bmatrix}y_{1}\\y_{2}\end{bmatrix}这种形式一般被记作: AX=Y 在抽象成矩阵进行简介表达后,想让这种形式能够进行一些线性方程组中常用的操作,比如说方程组间的加法、对方程组进行数乘运算、对方程组进行变量替换,这些操作分别对应矩阵加法,矩阵数乘,矩阵乘法 1...
仿射变换
一般表达式: \mathbf{p’} = A \cdot \mathbf{p}展开后: \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} R_{00} & R_{01} & T_x \\ R_{10} & R_{11} & T_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}仿射变换包括了以下变换及其组合: 平移 旋转 反射 缩放 错切 1 平移变换每个坐标都平移一定距离 \begin{equation} \left\{ \begin{aligned} x' &= x + T_x \\ y' &= y + T_y \end{aligned} \right. \end{equation}所以 A = \begin{bmatrix} 1 & 0 & T_x \\ 0 & 1 & T_y \\ 0 & 0 & 1 \end{bmatrix}2 旋转变换每个坐标绕着旋转中心旋转一定角度 原点位于左下角,p...
HAL库 编码器配置
1 基本配置烧录选择串行: 选择时钟 设置时钟频率 重设系统滴答定时器中断优先级 设置文件名和选择 IDE 设置只拷贝需要的库和创建独立. c 和. h 文件 建立工程并打开后在 Debug >> Settings 中勾选 Reset and Run 2 编码器配置 选择编码器模式,并配置定时器的分频系数和周期 配置编码器模式为 TI 1 和 TI 2 模式,检测边沿为两个 rising 在主函数中开启编码器 12HAL_TIM_Encoder_Start(&htim3,TIM_CHANNEL_ALL);HAL_TIM_Encoder_Start(&htim4,TIM_CHANNEL_ALL); 编码器读取函数 1234567void readEncoder(int speed[]){ speed[0] = -(short)__HAL_TIM_GET_COUNTER(&htim4); speed[1] =...
HAL库 PWM输出配置
1 基本配置烧录选择串行: 选择时钟 设置时钟频率 重设系统滴答定时器中断优先级 设置文件名和选择 IDE 设置只拷贝需要的库和创建独立. c 和. h 文件 建立工程并打开后在 Debug >> Settings 中勾选 Reset and Run 2 PWM 配置 选择定时器时钟源并将通道模式配置为 PWM 模式 配置定时器参数,PWM mode 1 模式下,什么电平有效就将 CH Polarity 设置为什么极性 生成代码后在主函数中进行初始化 12HAL_TIM_Base_Start(&htim3);HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); 改变占空比函数 1__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_3, 占空比数值);
HAL库 基本定时器中断配置
1 基本配置烧录选择串行: 选择时钟 设置时钟频率 重设系统滴答定时器中断优先级 设置文件名和选择 IDE 设置只拷贝需要的库和创建独立. c 和. h 文件 建立工程并打开后在 Debug >> Settings 中勾选 Reset and Run 2 基本定时器中断 勾选内部时钟,并配置定时器分频系数和周期 在 NVIC 中打开定时器更新中断 注意: 写下面这句: 1HAL_TIM_Base_Start_IT(&htimx); 最后编写中断回调函数 1234567void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if(htim == &htimx) { }}
HAL库 串口接收中断配置
1 基本配置烧录选择串行: 选择时钟 设置时钟频率 重设系统滴答定时器中断优先级 设置文件名和选择 IDE 设置只拷贝需要的库和创建独立. c 和. h 文件 建立工程并打开后在 Debug >> Settings 中勾选 Reset and Run 2 串口接收中断配置 选择合适的串口开启异步通信并配置好参数 NVIC 中开启串口 1 的全局中断 主函数初始化部分对串口接收中断进行初始化 1HAL_UART_Receive_IT(&huart1, &ucRxData, 1); //启用中断服务函数 配置中断回调函数 123456789101112void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ if(huart->Instance==USART1) { HAL_UART_Receive_IT(&huart1, &ucRxData, 1); // 每使用一次中断都要重新配置一次缓冲区 } // 或者...
HAL库 串口printf配置
1 基本配置烧录选择串行: 选择时钟 设置时钟频率 重设系统滴答定时器中断优先级 设置文件名和选择 IDE 设置只拷贝需要的库和创建独立. c 和. h 文件 建立工程并打开后在 Debug >> Settings 中勾选 Reset and Run 2 串口 printf 配置 选择要用于 printf 的串口,选择异步通信模式 在下方选项卡中可以配置串口参数 创建工程后重定向 printf 重定向函数的模板: 123456789/*** @brief 重定向printf*/int fputc(int ch, FILE *f){ uint8_t temp[1] = {ch}; HAL_UART_Transmit(&huart1, temp, 1, 2); return ch;} 或者 12345int fputc(int ch, FILE *file){ HAL_UART_Transmit(&huart2, (uint8_t*)&ch, 1,...