编辑
2024-12-25
Matlab
00

使用 MATLAB 的 ode45 求解常微分方程

简介

ode45 是 MATLAB 中一个常用的数值解常微分方程 (ODE) 的函数。它基于经典的 Runge-Kutta 方法,适用于求解非刚性方程。本文将介绍 ode45 的基本使用方法和一些简单的实例。

非刚性方程是指那些在数值求解时,不需要特别小的时间步长来保证稳定性的常微分方程。这类方程在数值求解过程中一般没有明显的数值振荡和稳定性问题,可以使用常规的数值方法如 ode45 等进行求解。

“45” 代表的是该方法使用了一个四阶的 Runge-Kutta 方法和一个五阶的 Runge-Kutta 方法。

四阶和五阶 Runge-Kutta 方法

  • 四阶 Runge-Kutta 方法 (RK4) :这个方法以其简单性和广泛的精度而著名。它在每个时间步长 h 中,通过评价四次斜率,来估计当前点的增量。
  • 五阶 Runge-Kutta 方法 (RK5) :它是四阶方法的扩展,通过评价额外次数的斜率,进一步提高了精度。

ode45 的基本原理

  1. ode45 组合使用了四阶和五阶 Runge-Kutta 方法,属于所谓的 Runge-Kutta-Fehlberg 方法。其基本工作原理如下:
  2. 每一步计算时,ode45 同时执行四阶和五阶的方法。
  3. 比较两者的结果,估计误差。
  4. 根据误差估计,动态调整步长:如果误差较大,减小步长;如果误差较小,增大步长。
编辑
2024-12-24
自动控制
00

image.png image.png

基本模型

电机模型:

Vm=iaRa+Ladiadt+EbV_m=i_aR_a+L_a\frac{di_a}{dt}+E_b

反电动势 (emf) EbE_{b} 与角速度 φ˙\dot{\varphi} 相关。

Eb=Kbφ˙E_{b}=K_{b}\dot{\varphi}

因为:La<<RaL_a<<R_a

所以: ia=VmKbφ˙Rai_a=\frac{V_m-K_b \dot{\varphi}}{R_a}

电机转矩 τ\tau 和反电动势 (emf) 有关:

τ=Ktia=KtVmKbφ˙Ra(公式4)\tau=K_t i_a=K_t \frac{V_m-K_b \dot{\varphi}}{R_a} (公式4)
编辑
2024-12-23
提示词工程
00
编辑
2024-12-23
Android/Java
00

JNI 简介

JNI(Java Native Interface)是“Java 本地接口”的缩写,用于指使用 C 和 C++ 语言开发的接口。由于 JNI 是 JVM 规范的一部分,所以我们编写的 JNI 程序可以在任何实现了 JNI 规范的 Java 虚拟机上运行。这一特性允许我们复用大量用 C/C++ 编写的代码。

然而,开发 JNI 程序会受到系统环境的限制,因为用 C/C++ 编写的代码在编译时依赖于操作系统提供的库函数,并需要链接到本地库上。因此,编译后的二进制代码只能在特定操作系统环境下运行。由于不同操作系统有各自的本地库和 CPU 指令集,各平台对标准 C/C++ 规范和库函数的实现方式也有所不同。这使得使用了 JNI 接口的 Java 程序不再具备完全的跨平台能力。如果要实现跨平台,需要在不同操作系统下编译出相应的动态库。

编辑
2024-12-23
Android/Java
00

Android 工程项目结构解析

工程关键部分

以 Android Studio(或 Eclipse + ADT)为例,大部分开发工作集中在以下几个目录:

  • java:存放业务功能的 Java 代码。
  • res:存放各种资源文件,如图片、字符串、动画、音频以及各种 XML 文件。
编辑
2024-12-23
Android/Java
00

应用清单

每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误)。清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码。

清单文件主要功能

此外,清单文件还可执行以下操作:

  • 为应用的 Java 软件包命名:软件包名称充当应用的唯一标识符。
  • 描述应用的各个组件:包括 Activity、服务、广播接收器和内容提供程序。它还为实现每个组件的类命名并发布其功能,如可以处理的 Intent 消息。
  • 确定托管应用组件的进程
  • 声明应用权限:访问 API 中受保护部分所需的权限和与其他应用交互所需的权限。
  • 列出 Instrumentation 类:提供分析和其他信息(仅在开发阶段)。
  • 声明应用所需的最低 Android API 级别
  • 列出应用必须链接到的库
编辑
2024-12-23
Android/Java
00

一、基础知识

  1. Android SDK/NDK:
    • Android SDK 包含了调试器、库、模拟器、文档、实例代码和教程。
    • NDK 是支持使用 C/C++ 开发的工具包,适用于原生应用程序开发。
编辑
2024-12-23
Android/Java
00

Java 的反射机制

Java 反射机制允许你在运行时获取类的详细信息,并且调用对象的方法。它的主要作用包括:

  1. 判断任意对象所属的类;
  2. 动态构建类的对象;
  3. 获取类的成员变量和方法;
  4. 调用对象的方法;
  5. 生成动态代理。
编辑
2024-12-23
Android/Java
00

一. 类与文件

  1. Java文件中类的规则

    • 一个Java文件可以包含多个类class。
    • 只能有一个public类,且文件名必须与public类名相同。这一点和matlab函数模块相似。
    • 使用javac编译后,会生成多个类名.class文件。运行时,使用java 类名执行具有主函数的类。
  2. Jar文件的创建与执行

    • 多个class文件可以打包成一个jar文件。
    • 使用java -jar test.jar执行前,需要在MANIFEST.MF中定义Main-Class属性,例如:Main-Class: test.someClassName
  3. 包(package)

    • 包用于组织相关类、接口及其他包。
    • 包对应的目录结构以/表示层级,例如 E:/Java/workspace/Demo/bin/p1/p2/Test.java
    • 包名表示层级关系,例如 p1.p2.Test 表示包 p1.p2 下的 Test 类。
  4. import 导入

    • import语句只能导入包中的类或接口,不能导入整个包。
    • 通常使用通配符*导入包下所有类或接口,例如:import java.util.*;
编辑
2024-12-23
Android/Java
00

我要看一遍这个教程,加上我个人的梳理整理,作为更强大的教程。为何要学这个教程,因为我要掌握NDK的交叉编译。

编辑
2024-12-20
CPP
00

标题:如何在Android Java的Ubuntu系统上编译出libopencv_java4.so

编辑
2024-12-19
CPP
00

要在 CLion 中进行内存分析,推荐使用 Valgrind,这是一款常见的动态分析工具,能有效检测内存泄漏和内存错误。CLion 对 Valgrind 提供了很好的集成支持。

编辑
2024-12-19
CPP
00

您可以通过以下步骤调整 Ubuntu 系统中的字体大小:

方法一:使用系统设置

  1. 打开“设置”:点击屏幕右上角的系统菜单(通常是齿轮图标或下拉箭头),选择“设置”。
  2. 选择“外观”:在“设置”窗口中,找到并点击“外观”选项。
  3. 缩放:在“缩放”部分,可以调整缩放比例。默认情况下,您可以选择 100% 或 200%。如果您的系统支持 fractional scaling (部分缩放),您可以开启该功能,然后选择更多比例,如 125%、150% 等。
  4. 字体缩放:在一些 Ubuntu 版本中,您可以在“字体”部分直接调整字体大小滑块以增大字体。
编辑
2024-12-19
CPP
00
编辑
2024-12-19
Linux运维
00

虚拟机安装 openssh-server

要从主机电脑通过SSH连接到VMware Workstation中的虚拟机,您需要确保以下几点:

  1. 虚拟机有SSH服务:您的虚拟机需要安装并运行SSH服务。例如,在基于Debian/Ubuntu的系统上,您可以通过以下命令安装SSH服务:
    bash
    展开代码
    sudo apt update sudo apt install openssh-server sudo systemctl enable ssh sudo systemctl start ssh sudo vim /etc/ssh/sshd_config # 修改配置,如果想修改的话,修改后重启ssh
编辑
2024-12-19
Linux运维
00

在Ubuntu桌面版中,您可以通过以下步骤设置自动登录,从而避免每次输入密码进入系统:

  1. 打开“设置”。
  2. 在左侧面板中,找到并点击“用户”。
  3. 选择要自动登录的用户。
  4. 点击“解锁”并输入您的密码以进行更改(如果系统提示,需要输入当前用户的密码)。
  5. 找到“自动登录”选项,并将其打开。然后reboot就可以了。

进行上述操作后,下次启动Ubuntu时便会自动登录到所选用户账户。

编辑
2024-12-18
深度学习
00
编辑
2024-12-18
Android/Java
00
编辑
2024-12-18
Android/Java
00
编辑
2024-12-18
Android/Java
00

1. 新建工程

如果你的团队较为熟悉 Maven,项目需要稳定且有严格的结构标准 ,Maven 可能是一个不错的选择。

如果你追求构建速度更快、构建脚本更简洁和灵活性 ,那么 Gradle 可能会更适合你。