北太天元不支持 categorical 类型变量作为拟合变量,可使用 CategoricalVars 参数替代
%% 分段线性回归拟合:NIPT检测数据分析
% 业务背景:研究无创产前检测(NIPT)中,胎儿Y染色体浓度的影响因素
% 核心变量说明:
% Y - 母血中胎儿Y染色体游离DNA浓度(因变量/核心指标)
% GA - 孕妇孕周(自变量)
% BMI - 孕妇身体质量指数(分组依据)
% 分析目的:按BMI分组拟合回归线,探究不同肥胖程度下孕周对Y浓度的影响
% 兼容说明:北太天元不支持 categorical 类型变量作为拟合变量,可使用 CategoricalVars 参数替代
clear; clc; close all;
%% ========== 1. 生成模拟数据 ==========
rng(0); % 固定随机种子,结果可复现
n = 50; % 模拟样本数量
Y = rand(n,1) * 0.2; % 模拟胎儿Y染色体浓度数据
GA = rand(n,1) * 20 + 10;% 模拟孕周范围 10~30周
BMI= rand(n,1) * 30 + 15;% 模拟BMI范围 15~45
% BMI分组(固定切点:<30.5 / 30.5~36 / ≥36)
BMI_group = discretize(BMI, [0, 30.5, 36, Inf]);
% 构建回归分析数据表
model_data = table(Y, GA, BMI_group, 'VariableNames', {'Y','GA','BMI_group'});
%% ========== 2. 【初始方案】转为分类变量(北太天元不支持,会报错) ==========
% 北太天元兼容性问题:不支持 categorical 数据类型,此代码运行报错
% model_data.BMI_group = categorical(model_data.BMI_group);
% model1 = fitlm(model_data, 'Y ~ BMI_group * GA');
%% ========== 3. 【错误用法】数值型分组直接拟合 ==========
% BMI_group为数值类型,会被模型当作连续变量,无法实现分组分段效果
% model2 = fitlm(model_data, 'Y ~ BMI_group * GA');
%% ========== 4. 【替代方案】CategoricalVars 参数指定分组变量 ==========
% 无需转换数据类型,直接指定分组变量,完美替代 categorical,兼容北太天元
model_final = fitlm(model_data, 'Y ~ BMI_group * GA', 'CategoricalVars', "BMI_group");初始方案报错信息如下:预测变量必须为数值向量、数值矩阵或分类向量。位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\FitObject.bp]位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\TermsRegression.bp]位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\FitObject.bp]位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\LinearModel.bp]位于 BP 文件 [D:\ProgramFiles\baltamatica\toolbox\Stats\src\fitlm.bp]位于文件 D:\Baltamatica\Workspace\learn\Baltamatica\产品使用案例制作\NIPT的时点选择与胎儿异常判定\test.m (第 27 行)model1 = fitlm(model_data, 'Y ~ BMI_group * GA');
这是一个基于北太天元平台开发的,用于解决具有快速振荡系数的多尺度偏微分方程的数值求解工具箱。它内置高阶多尺度方法和直接精细数值模拟两种多尺度建模与数值求解方法,专为模拟复合材料、多孔介质等非均匀材料中的复杂物理场(如瞬态热传导与波传播)而设计。以下为代码和帮助文档下载地址,https://github.com/PokerJin/PDE-Toolbox.git。
欢迎各位朋友在此贴下回复反馈问题,您的每一条反馈都是在为国产基础软件添砖加瓦。我是北太天元Python工具箱开发人员。由于开发过程中无法测试到所有情形,若有遇到的闪退问题,或是有需要提出添加/修改的功能都可以在下方留言。
深度学习工具箱中支持的预训练模型可通过以下链接进行下载,下载完成后可直接放置于model文件夹下预训练模型包括AlexNet、VGG16、ResNet18、Densenet121、GoogLeNet等,共31个百度网盘链接: https://pan.baidu.com/s/1r2J1nhyJvUYpxp9o-_muFA?pwd=durb 提取码: durb夸克网盘链接:https://pan.quark.cn/s/c4e7f61f56fe提取码:MYwq
在目前4.0.1版本中,深度学习工具箱中只有googlenet模型,在使用其他模型时需要前往开发者社区下载相应模型,但是我并未在社区找到其他模型
三维光子晶体能带结构计算的快速算法(FAME,Fast Algorithms for Maxwell's Equations)作者:南京应用数学中心林文伟教授团队及东南大学李铁香教授团队用途:光通讯、光子集成器件设计及国防科技等领域的研究4.0版本的北太天元更新了FAME到FAME2.0,包括Windows版本和Ubuntu22.04版本。FAME2.0 需要 CUDA环境才能正常加载和使用,推荐 NVIDIA® GeForce® GTX 1050、Tesla® K40、Quadro® P1000 及以上显卡,并推荐安装 CUDA 10 及以上版本。FAME2.0配套的CUDA环境可以在网盘上下载,下载对应的系统的库文件后放到 软件安装目录/plugins/FAME目录下通过网盘分享的文件:FAME2.0依赖库链接: https://pan.baidu.com/s/1MQVk8xjzHclt19gpFxmI9Q?pwd=j26v 提取码: j26v
matlab可以通过app designer自己设计工具箱,请问北太天元是否也有这种功能,可以设计人机交互界面
目前,国外的MathCAD、MathCAD primer、Smath studio、Calcpad等软件,独特的可视化格式和便笺式界面将直观、标准的数学符号、文本和图形均集成到一个工作表中。 采用接近在黑板上写公式的方式让用户表述所要求解的问题,通过底层计算引擎计算返回结果并显示在屏幕上。计算过程近似透明,使用户专注于对问题的思考而不是繁琐的求解步骤。希望北太天元可以进一步优化其交互界面,降低用户的入门门槛。
17.1 原理 完整思想请看我前面写的路径规划(十三)基于搜索的路径规划算法-前言,,和其他的基于搜索的路径规划算法的区别仅在于启发式函数的不同. 双向A*则稍微复杂些,但可以简单理解为起始节点和终点同时将对方视为目标节点,并按照A*的启发式函数,相向生长,当两者相遇时,则停止迭代,并分别往回追溯自己的父节点即可得到路径。17.2 程序示例
16.1 原理 完整思想请看我前面写的路径规划(十三)基于搜索的路径规划算法-前言,,和其他的基于搜索的路径规划算法的区别仅在于启发式函数的不同 A*则是结合了Best-first Searching和Dijkstra,它将当前节点到初始节点和到目标节点的距离之和作为启发式函数。16.2 程序示例16.3 参考A Formal Basis for the heuristic Determination of Minimum Cost Paths
15.1 原理完整思想请看我前面写的路径规划(十三)基于搜索的路径规划算法-前言,和其他的基于搜索的路径规划算法的区别仅在于启发式函数的不同Dijkstra则和Best-first-searching相反,它不是将到目标节点的距离作为启发式函数,而是将到起始节点的距离作为启发式函数。15.2 程序示例
14.1 原理这里的Best-first-searching和数据结构里学的图搜索算法BFS(广度优先搜索)不是一个东西。完整思想请看我前面写的路径规划(十三)基于搜索的路径规划算法-前言下面说说Best-first-searching的核心思想:Best-first Searching的启发式函数f(x)=dist(x,x_goal),即Best-first Searching每一步都在预选集合中寻找距离目标节点最近的的那个节点。这里的dist(x,y),如果节点x,y无法通过碰撞检测,则为inf,如果能通过碰撞检测,可以直接用欧几里得距离代替。14.2 程序示例14.3 参考https://blog.csdn.net/potato_uncle/article/details/109124362?ops_request_misc=&request_id=&biz_id=102&utm_term=best%20first%20search&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-109124362.nonecase&spm=1018.2226.3001.4187
基于搜索的路径规划算法基本都是一个套路,它们都是根据启发函数重备用节点的集合中来寻找下一个节点,不同的启发函数也就有不同的搜索类算法。搜索类算法是离散化的算法,体现在整个图的区域是由有限个小方块区域组成的。我们暂且把这些小方块区域称为“节点”。因此,整个区域被有限个节点填充,且每个节点的邻居节点为有限个。设置两个集合OPEN,CLOSE,OPEN初始状态设为{x_init},CLOSE 初始状态设为空集。依据不同的启发式函数,从open集中选择一个点加入到close集中,然后拓展open集,如上图,右下角的某个点被某种启发式函数选中,加入到close集中,并相继拓展open集下面介绍下搜索类算法的前进过程:当上述伪码退出循环后,沿着x_goal的父节点往前回溯极为路径各搜索类算法的区别在于第三行启发函数的类型的不同,导致连接的节点不同。
几种RRT对比如下:几种RRT对比视图mp4 RRT及其变种都是依托于采样+在树结构上加减枝的形式进行路径规划的,具有全局收敛特性,但是效率稳定性不高。不过可以针对性地对其主要函数进行优化进行效率的改进:优化采样,优化树结构等。一种加速RRT的思路就是,从起始点和目标节点同时生长RRT树,这就是connected_RRT。此外,针对变化的环境,还有extend_RRT和Dynamic_RRT。 RRT*是一种趋近于最优路径的方案,它通过重布线来实现这一目的,它在理论上能达到最优解,但它全局随机撒点的特性导致它在远离目标路径的地方做了过多的生长。 为了集中优化资源,RRT*-smart应运而生,它比较在乎路径和障碍物的拐点的附近的优化,它通过路径优化步骤判断出路径和障碍物的拐点,并在拐点的邻域内投入更多的资源(即撒更多的点),以实现集中优化资源。 但RRT*-smart依然浪费了太多的随机点在远离目标路径的区域,那什么才叫不远离目标路径的区域呢?informed RRT*则解决了这一问题,它利用初始路径的长度,起始点和目标点,画出了一个椭圆,informed RRT*认为,这个椭圆区域就是不远离目标路径的区域,生成这个椭圆后,后续的随机撒点只洒在这个椭圆区域内,当更优的路径被发现,则根据这个新路径的长度,缩小椭圆,进一步在有效区域集中撒点资源,以实现加速。 然而,RRT*类的算法是总会面临一个问题,那就是重布线,这个令RRT*能够逼近最优解的创新恰恰成为了它慢的原因。 于是,另一种思路被提出,那就是提前给定随机点,然后通过启发式函数来连接这些点以生长路径,这就是FMT*,FMT*专门针对解决高维构型空间中的复杂运动规划问题,在预先确定的采样点数量上执行前向动态规划递归,并相应地通过在代价到达空间中稳步向外移动生成路径树。FMT*能很快的找到一条路径,但是当我们想对这条路径进行优化时,只有通过加密随机采样点的方式,然而,FMT*是一种单批算法,面对新的采样点分布时,它只能重新开始计算。 为了融合informed RRT*在有效区域集中随机点的特点和FMT*快速生长的特点,就诞生了BIT*。它能够在椭圆区域内分批撒点,实现快速生长的同时,还能自我优化。参考https://www.youtube.com/watch?v=TQIoCC48gp4
11.1 原理 简单来说,BIT*是结合了Informed RRT*和FMT*的优点的一种算法。回顾一下,Informed RRT*是对RRT*的一种优化,在RRT*生成一个初始路径后,则以初始路径的长度,起始点和目标点为焦点,画一个椭圆,Informed RRT*在后续随机采点时,只取落在这个椭圆内的点,一次采一个点,重复lm次。FMT*则与RRT那一套不同,它不是边采点,边生长树,而是一次性提前在整个区域(不包含障碍物区域)内采lm个点,只重复一次。 下面我们来说说,Informed RRT*和优缺点FMT*,然后就知道为什么要引出BIT*了。 先说FMT*,FMT*的优点是从起始位置开始构建,没有重布线过程,因此节约时间,适用于复杂的障碍物环境。但是FMT*的缺点是,它只有1批,FMT*路径的精度完全取决于当前批撒点的密度,当你想要提升精度时,只能重新开始一批,重新更密集的撒点,然后重新开始规划。 再说Informed RRT*,Informed RRT*的优点恰好弥补了FMT*的缺点,想要提升精度,只需撒更多的点就好了,而Informed RRT*的撒点过程时一直在进行的,它一批只撒一个点,重复很多批,开始新的批的时候之前的信息不会被抛弃,只要Informed RRT*一直撒点,就可以达到任意精度。但是Informed RRT*的缺点也显而易见,它需要重布线,计算效率低。 所以自然就想到,能不能利用FMT*的优点,提前撒好点,不用重布线,提升计算效率,又能多批进行,以不断提升精度?当然能,这就是BIT*算法 BIT*的过程总结为下图:11.2 伪码11.3 参考1、Batch Informed Trees (BIT*): Informed Asymptotically Optimal Anytime Search2、Batch Informed Trees (BIT*): Sampling-based Optimal Planning via the Heuristically Guided Search of Implicit Random Geometric Graphs