v4.1.0_release【安装包获取】 baltamatica_4.1.0_win_x86_64.exe baltamatica_4.1.0_ubuntu22.04_amd64.deb【新增功能】 北太天元 baltamatica_4.1.0 更新日志
基本信息北太天元科学计算与系统仿真软件v4.120250527功能新增内核能力新增新增面向对象编程功能:Dependent:从属属性Constant:常量属性支持如下属性特性支持定义属性 get 和 set 方法新增对持久变量的支持try - catch 新增一个用法,现在可以不写 catch 块的内容,含义为执行 try 的内容,如果出错就忽略剩余内容,继续执行后面的语句。
try b = sin('a'); % 运行到此处出错,会执行第 5 行的内容 b = 1; end disp('hello');主体函数新增函数名函数说明evalc对字符串表达式求值,并捕捉表达式输出结果properties获取类的属性名methods类方法名称superclasses超类名称isprop确定属性是否由对象定义ismethod确定对象是否具有指定的方法tcpclient创建与 TCP/IP 服务器的 TCP/IP 客户端连接tcpclientfind查找 TCP/IP 连接echotcpip启动或停止 TCP/IP 回显服务器tcpserver创建 TCP/IP 服务器tcpserverfind查找 TCP/IP 服务器echoudpudp 回显服务器udpportfind查找所有 udp 连接udpport创建 udp 连接xlsread读取电子表格文件textscan从文本文件或字符串读取格式化数据h5read从 HDF5 数据集读取数据qz广义特征值的广义舒尔 (QZ) 分解ordqz在 QZ 分解中将特征值重新排序注:更详细的函数使用说明请参考帮助文档。集成开发环境(IDE)功能新增支持香港手机号码注册登陆新增数据类型timetable 在工作区的展示支持类属性在工作区的修改及高亮AppDesigner新增支持以编程方式开发 App。函数描述uifigure创建用于设计 App 的图窗uiprogressdlg创建进度对话框uialert显示警报对话框uiaxes为 App 中的绘图创建 UI 坐标区uiopen打开文件选择对话框并将选定的文件加载到工作区中uimenu创建菜单或菜单项uitable创建表用户界面组件uilablel创建标签组件uibutton创建普通按钮uidropdown创建下拉组件uilistbox创建列表框组件uieditfield创建文本或数值编辑字段组件uigetdir打开文件夹选择对话框工具箱能力新增统计与机器学习工具箱函数描述detectdrift基于置换检验检测基准数据与目标数据间的分布漂移histfit具有分布拟合的直方图mle最大似然估计makedist创建概率分布对象fitdist对数据进行概率分布对象拟合probplot绘制概率图qqplotQuantile-quantile图proflik概率分布的轮廓似然函数runstest随机性检验hmcSampler哈密尔顿蒙特卡洛采样器BinomialDistribution二项分布MultinomialDistribution多项分布NegativeBinomialDistribution负二项分布PoissonDistribution泊松分布BetaDistributionbeta 分布BirnbaumSaundersDistribution伯恩鲍姆-桑德斯分布BurrDistribution伯尔 XII 型分布ExponentialDistribution指数分布ExtremeValueDistribution极值分布GammaDistributiongamma 分布GeneralizedExtremeValueDistribution广义极值分布GeneralizedParetoDistribution广义帕累托分布paretotails帕累托分布HalfNormalDistribution半正态分布InverseGaussianDistribution逆高斯分布KernelDistribution核分布LogisticDistribution逻辑分布LoglogisticDistribution对数逻辑分布LognormalDistribution对数正态分布LoguniformDistribution对数均匀分布NakagamiDistributionNakagami 分布NormalDistribution正态分布PiecewiseLinearDistribution分段线性分布RayleighDistribution瑞利分布RicianDistribution莱斯分布StableDistribution稳定分布tLocationScaleDistributiont 位置尺度分布TriangularDistribution三角分布UniformDistribution均匀分布(连续)WeibullDistribution威布尔分布全局优化工具箱新增函数函数描述mopso多目标粒子群算法vega向量化遗传算法函数新增算法函数新增功能gamultiobj新增NSGA MOGA算法控制工具箱函数描述icare连续时间代数Riccati方程的隐式求解器idare离散时间代数Riccati方程的隐式求解器lyap求解离散时间李雅普诺夫方程lqg线性二次高斯控制设计lqgreg构建线性二次高斯调节器lqi线性二次积分控制lqr线性二次调节器设计kalman卡尔曼滤波h2synh2控制器综合脑电工具箱新增如下功能:锁定的试验平均值或事件相关电位数据处理及可视化对单通道事件相关数据的多个epoch进行时间/频率分析导入Neuroscan文件的辅助功能函数北太真元功能新增基础计算单元模块分类功能sFunctionuserDefinedFuncs支持用户通过level-1 m或c模板实现自定义模块功能行业计算单元模块分类功能Generate Run ScriptAerospaceToolbox\Flightgear生成FlightGear运行脚本模块Pack net_fdm Packet for FlightGearAerospaceToolbox\Flightgear生成FlightGear的net_fdm数据包Receive net_ctrl Packet from FlightGearAerospaceToolbox\Flightgear从FlightGear接收net_ctrl数据Send net_fdm Packet to FlightGearAerospaceToolbox\Flightgear将net_fdm数据包传输到目标IP地址和端口的FlightGear中Simulation PaceAerospaceToolbox\Flightgear设置仿真速率Unpack net_ctrl Packet from FlightGearAerospaceToolbox\Flightgear解码从FlighGear接收到的net_ctrl数据包WGS84 Gravity ModelAerospaceToolbox\Flightgear实现1984年世界大地测量系统(WGS84)地球重力的表示6DOF (Euler Angles)AerospaceToolbox\Flightgear实现六自由度运动方程的欧拉角表示6DOF ECEF (Quaternion)AerospaceToolbox\Flightgear在地心地固(ECEF)坐标系中实现六自由度运动方程的四元数表示6DOF Wind (Quaternion)AerospaceToolbox\Flightgear实现相对于风轴的六自由度运动方程的四元数表示6DOF Wind (Wind Angles)AerospaceToolbox\Flightgear实现六自由度运动方程的风向角表示1D Controller A(v) B(v) C(v) D(v)AerospaceToolbox\Flightgear实现基于一个调度参数的增益调度状态空间控制器1D Observer Form A(v) B(v) C(v) F(v) H(v)AerospaceToolbox\Flightgear实现基于一个调度参数的增益调度状态空间控制器(以观测器形式)2D Controller A(v) B(v) C(v) D(v)AerospaceToolbox\Flightgear实现基于两个调度参数的增益调度状态空间控制器Attitude Profile (Geographic Pointing)AerospaceToolbox\Flightgear计算最短四元数旋转ECI Position to AERAerospaceToolbox\Flightgear将地心惯性(ECI)坐标转换为方位角坐标ECI Position to LLAAerospaceToolbox\Flightgear将地心惯性(ECI)坐标转换为大地纬度、经度和高度(LLA)坐标Geodetic to Geocentric LatitudeAerospaceToolbox\Flightgear使用大地纬度和椭球高度将大地纬度转换为地心纬度和从行星中心到重心的任意半径LLA to ECI PositionAerospaceToolbox\Flightgear将大地纬度、经度、高度(LLA)坐标转换为地心惯性(ECI)坐标新增状态机建模支持基础状态建模:支持状态定义:状态名称、状态入口、执行和退出的关键字(en、du、ex、entry、during、exit)状态转移功能:动作、条件、时间事件;支持逻辑运算和函数调用变量区功能:支持输入、输出、局部变量;时间事件函数:before、after、at、every、temporalCount、elapsed、count、duration;状态、事件关键字检查和语法检查支持m语法插件功能新增IQA智能问答插件函数描述AILoadChat加载历史的对话信息AIInit该函数根据用户指定的参数初始化人工智能设置。AIChat使用智能问答系统对用户的提问进行回答。AISetParams修改模型的参数Python插件⽀持创建 python 根对象、⽀持调⽤python函数、⽀持disp(变量名)展⽰详细信息、⽀持在当前环境安装python包、⽀持设置和切换指定的python虚拟环境。函数描述pipcmd使用 pip 在当前环境进行Python包管理pyenv查看Python环境pyroot获取 Python 插件根对象用于调用 Python 函数PySym插件函数描述sym函数创建符号变量或表达式syms函数创建多个符号变量或表达式simplify函数简化符号表达式taylor求表达式的泰勒级数limit符号表达式的极限int求不定积分或定积分symdiff求表达式的导数或偏导数图论(graphtheory插件)函数名函数说明bctree图的块割点树allpaths用于计算图中从指定源节点到目标节点的所有路径minspantree用于计算无向图的最小生成树hascycles用于检测给定图是否包含回路allcycles用于提取图中所有回路cyclebasis用于提取图的基本圈graphneighbors返回图节点的相邻节点predecessors获取指定节点的前继节点successors获取指定节点的后继节点功能优化内核优化try catch 使用方式更灵活,关键字后不必接逗号即可正常使用。catch 语句不接逗号时,具体行为如下:紧跟着一个变量名,那么该变量名将会被识别为异常对象其他情形,那么该语句会被识别为普通的可执行语句,不生成表示异常的对象(在之前的版本中,这样使用会出错或报告警告)global 被实现为关键字,在旧版本中它是内置函数。语法为:
global var1 var2 ...因此,global('var1')这类语法将不再支持。除以上修改外,全局变量的使用机制未做更改。规范函数定义语法。在之前的天元中,函数定义语句的入参和出参可以为任意表达式。例如:
function myfun(a(1), b, c.d) end现在解释器增加如下规范:输入参数:只能是变量名或 ~(占位符)输出参数:只能是变量名 语法检查变得更严格,变量名不符合规则会报错。改进命令语法对逗号的处理。旧版命令语法中,逗号 , 被无条件视为是一句命令语法的结束,现在做出如下调整:逗号前左右括号数量相等,那么视为语句结束逗号前左右括号数量不等,那么视为文本参数括号不区分种类,例如 (] 也视为括号数量相等 举例:
disp a(1,2) % 输出 a(1,2),之前的版本会报错括号不匹配 disp a,b % 输出 a,然后输出 b 的内容 disp a)(,) % 语法错误,最后面的 ) 没有对应的 (在 M 函数中使用静态的方式扫描变量名(和代码执行顺序无关),符号被识别为变量后(例如出现在赋值语句左侧,或是作为函数的输入/输出参数), 不可作为函数调用。例如如下代码,旧版软件会正常执行,新版软件会先将 sin 识别为变量,进而导致 a = sin(1) 执行出错。
function myfun a = sin(1); sin = 1; end备注:M 脚本、命令行语句不会进行静态扫描,仍然遵循顺序执行逻辑,函数与变量可以自由切换静态扫描不会处理隐式创建的变量,例如 eval 函数,load 载入的变量如果后续使用 clear 清除与函数名同名的变量,那么变量会被还原为函数匿名函数现在支持使用 nargin nargout短路逻辑运算&& ||支持输入为 char 类型的数据北太天元软件关闭时会自动卸载所有插件,这样所有插件的 bxPluginFini 函数会被自动触发主体函数优化函数名优化内容eval, evalin当输入是字面量时,优化了反复调用的执行效率str2func支持将静态成员函数转化为句柄,例如 str2func('myclass.sf')svd支持指定以列向量的形式返回奇异值svds支持 double 数据类型datetime支持 'ConvertFrom' 参数三角函数支持稀疏矩阵cellfun, structfun支持 datetime 数据类型sum支持稀疏矩阵xor, &, |支持稀疏矩阵isequaln支持稀疏矩阵cast支持稀疏矩阵double支持稀疏矩阵dot支持高维数组conj支持处理逻辑数组rand, randn, randi支持 'like' 参数bicg, bicgstab, bicgstabl, cgs, gmres增加对非方阵、非列向量等非法类型的验证判断cumsum, cumprod实现溢出加法、溢出乘法注:更详细的函数使用说明请参考帮助文档。集成开发环境(IDE)优化输入框和文本搜索框优化,增加统一样式的右键菜单优化tooltips显示优化窗口阴影显示工具箱优化统计工具箱函数描述randg支持 'like' 参数控制工具箱以下函数使用面向对象方法重构函数描述dss描述性ss的模型pidpid控制器pidstd标准结构的pid控制器filtDSP格式的离散传递函数rss随机连续传递函数drss随机离散传递函数sparss解析状态空间模型sparssdata提取状态空间模型参数step阶跃响应impulse脉冲响应lsim给定输入的系统响应isct判断模型是否连续isdt判断系统是否离散isempty判断系统是否为空isfinite判断系统参数为无穷isproper判断模型是否合理isreal判断模型参数是否为实数issiso判断系统是否为单输入单输出isstable判断系统是否稳定isstatic判断系统是静态还是动态order模型阶次ndims模型维度size模型输入和输出维度bodemagbode幅值图norm模型范数damp模型阻尼和固有频率pzmap极点和零点图piddataPID控制器参数stepinfo阶跃信息lsiminfo仿真信息ctrb计算可控性矩阵ctrbf可控性梯形形式get获取模型属性值obsv计算可观测性矩阵obsvf可观测性梯形形式pole系统极点set设置模型属性值ss创建状态空间模型ssdata获取状态空间模型数据tf创建传递函数模型tfdata获取传递函数模型数据zero系统零点zpk创建零极点增益模型zpkdata获取零极点增益模型数据北太真元优化simulink模型导入真元支持包含matlab function和虚拟子系统的simulink模型导入真元。fmu模型导入真元支持model-exchange模型导入(fmi协议1.0/2.0/3.0)。新增co-simulation模型导入的fmi协议1.0/3.0支持。插件功能优化FAME插件完善了.poscar文件类型光子晶体的种类。问题修复内核问题修复取下标/赋值修复了 a(1) = b(2) 不会输出到命令行的问题现在对于取下标语句,只能指定 1 个输出,使用两个以上输出会报错,例如 [x, y] = A(1) 当 A 是一个变量时会报错解决了一个 {end} 在嵌套结构中会报错的问题面向对象解决了某些情况下超类构造函数重复调用或没有调用的问题取值为枚举值的各特性现在可以使用字符向量指定,例如 Access = 'public'类定义文件中的局部函数现在可以访问类的私有/保护成员修复在子类重写方法后,在父类无法调用该方法的问题修复了在其他类内调用类 A 的构造函数,类 A 超类的 protected 构造函数无法调用的问题矩阵构造与运算解决了 ~ ^ 等符号在使用空格分隔的矩阵数组时解析错误的问题函数句柄/匿名函数解决了一个将具名函数句柄赋值给另一普通函数名后,生成语法不正确的问题。举例:
cos = @sin; a = cos;这里cos是内置函数,之前的版本将a = cos识别成了函数调用(实际应为变量赋值)解决了匿名函数体没有用到参数时,输入实参不足会报错的问题。例如:
fh = @(x) 1; fh() % 返回 1,旧版会提示输入参数不足修复了匿名函数转字符串可能会有额外括号的问题解决了静态方法取函数句柄时,输出参数未被正确设置的问题主体函数问题修复函数名修复内容dot修复输入空矩阵时闪退的问题tensorprod修复传入 all 参数时,返回值类型有误的问题quadgk修复变量范围相等时无法计算的问题orth修复非法输入时报错不准的问题interp1q修复输入稀疏矩阵时异常报错的问题xlsread修复无法正确读取 xlsx 文件中日期单元格的问题fscanf修复以 %c 形式读取时闪退,且不支持指定读取宽度的问题bitand修复未指定 assumedtype 时结果错误的问题bitshift修复指定位数超过数据位数时存在结果错误的问题bitset修复输入数组存在空时返回维度错误的问题;修复指定位数为标志位时存在结果错误的问题bitget修复指定位数超过 int32 时存在结果错误的问题readmatrix修复读取单列或单行 xls 文件时返回为空,无法跳过空行空列和标题行的问题timetable修复只指定行时间时报错的问题ismissing修复输入字符串数组中含有 nan 时,计算错误的问题regexp修复输入空字符串时闪退的问题insertBefore修复未处理空字符向量的问题strcat修复不能处理空数组的问题strrep修复不支持参数指定为空字符串的问题strsplit修复不能处理空输入的问题deblank修复不能处理以 '\0' 结尾字符串的问题extractAfter修复第二个参数不能指定为空输入的问题replaceBetween修复开始文本模式和终止文本模式不能同时指定为空的问题any修复输入空稀疏矩阵时计算不正确的问题writematrix修复不能正确处理制表符的问题并置修复 char 和复数并置未报错,与小数并置结果有误的问题注:更详细的函数使用说明请参考帮助文档。北太真元问题修复基础计算单元模块分类功能integratorLimitedcontinuous修复外部x0不起效导致计算错误的问题integratorWrapedcontinuous修复外部x0不起效导致计算错误的问题已知问题内核常量属性默认值不能使用其它常量属性的值,会闪退
更新失败,如图所示。我的安装路径是D:\Programs\baltamatica. C:/Users/(用户名)/Downloads和D:\baltam这两个目录都不存在。
v4.0.3_release【安装包获取】 baltamatica_4.0.3_win_x86_64.exe baltamatica_4.0.3_ubuntu22.04_amd64.deb【新增功能】 北太天元 baltamatica_4.0.3 更新日志
一、基本信息北太天元科学计算与系统仿真软件v4.0.320250304二、问题修复1、真元在导入simulink文件时优化提示信息。如果存在真元不支持的模块,提示具体的模块名称;2、用户更改系统默认下载目录后,再进行版本更新安装会报错提示找不到文件问题修复;
v4.0.2_release【安装包获取】 baltamatica_4.0.2_win_x86_64.exe baltamatica_4.0.2_ubuntu22.04_amd64.deb【新增功能】 北太天元 baltamatica_4.0.2 更新日志
一、基本信息北太天元科学计算与系统仿真软件v4.0.220250219二、功能新增1、插件新增(1)IQAIntelligent Question Answering,智能问答函数描述AIInitAI模型初始化函数AIChat与AI大模型进行交互问答具体使用帮助可参考:北太天元宣布接入DeepSeek,欢迎试用!
baltamatica 4.0.1_release一、北太天元问题修复1. 修复cat函数当串联空数组会报错的问题2. 解决部分场景下稀疏矩阵乘法计算错误3. 解决矩阵函数logm当入参为稀疏矩阵时会闪退的问题二、北太真元问题修复1.修复gain模块向量乘法时维度计算错误2. 修复IC模块输入连续信号时重置初始值无效的错误3. 修复variableTimeDelay模块警告信息打印在天元的错误4.修复调试过程中连续点击步退会导致软件闪退的问题
v4.0.1_release【安装包获取】 baltamatica_4.0.1_win_x86_64.exe baltamatica_4.0.1_ubuntu22.04_amd64.deb【新增功能】 北太天元 baltamatica_4.0.1 更新日志
baltamatica_999_4.0.0_dev0【安装包获取】版本芯片操作系统安装形式baltamatica_999-4.0.0-dev0_aarch64.tar.xzarmLinux通用绿色版baltamatica_999-4.0.0-dev0_Linux_aarch64.debarmLinux通用安装包baltamatica_999-4.0.0-dev0_amd64.tar.xzx86_64Linux通用绿色版baltamatica_999-4.0.0-dev0_Linux_amd64.debx86_64Linux通用安装包baltamatica_999-4.0.0-dev0_win_x86_64.exex86_64Windows安装包baltamatica-999.4.0.0.dev0-1-x86_64.pkg.tar.zstx86_64archlinux安装包baltamatica-999.4.0.0.dev0-1.x86_64.rpmx86_64Linux通用安装包baltamatica_999-4.0.0-dev0_uos20_loongarch64.debloongarch64统信安装包【更新内容】本开发者预览版基于正式版 v4.0.0,包含以下的更新:一、内置函数优化如下函数的输入支持高维数组:cumopgammalnShiSi二、BUG 修复修复在部分 Linux 系统中软件因 OpenGL 依赖错误而无法启动图形界面或绘图函数闪退的问题修复正式版脚本编辑器和命令行无法使用 fcitx5 框架输入法的问题(例如搜狗输入法等)修复 table 赋值时列名丢失的问题修复当 a 为标量时,矩阵右除 a/B 错误调用数组右除的问题修复 gamma 输入 NaN 时结果不正确的问题修复 exist 函数会错误将未赋值的输入参数判断为 true 的问题三、系统要求通用版和绿色版最低系统要求为 glibc >= 2.27,已经测试的系统包括:系统名支持的版本Ubuntu>=18.04Debian>=10RedHat/CentOS/Rocky>=8Fedora>=29Deepin20.9 23统信 UOS20银河麒麟V10 SP1ArchLinux/请注意:旧版 Linux(例如 ubuntu 16.04、RedHat/CentOS 7)不再支持。四、绿色版说明Linux 绿色版需要系统运行时库才能正常启动,请解压缩后手动安装系统依赖:Debian 系列系统(Debian,Ubuntu,Deepin,统信,银河麒麟等):sudo apt install binutils libopengl0 libdbus-1-3 libglib2.0-0 libnghttp2-14RedHat 系列系统(RedHat,CentOS,Rocky):sudo dnf install binutils libglvnd-opengl dbus-libs glib2 libnghttp2ArchLinux:sudo pacman -S binutils libglvnd dbus glib2 libnghttp2五、工具箱/插件相关说明预览版目前定位为北太天元主体软件的功能预告与尝鲜,仅包含部分社区版的工具箱与插件。且因其特殊属性,无法更新到正式版。以下是暂未包含的工具箱/插件:FAME(插件)图像处理工具箱偏微分方程工具箱代码生成工具箱深度学习工具箱脑电工具箱计算机视觉工具箱时空智能 PNT 工具箱部分工具箱随研发排期会逐渐添加到预览版中,但仍然需要相应 License 才能使用。六、已知问题在统信 UOS 等国产系统中,系统的安全策略可能会阻止程序运行,需要在系统安全设置中允许任意应用运行,详见 https://faq.uniontech.com/desktop/app/2eb3在使用非 debian 系列系统(如 redhat、fedora、centos、archlinux)运行软件时,软件部分功能可能会因为安装目录权限问题而无法正常使用,例如北太真元无法打开 .bt 文件。可将安装目录权限设置为使用者临时解决此问题。例如 chown -R user:user /opt/Baltamatica北太天元软件在分辨率过低的桌面(宽小于 1200,高小于 800)界面可能会显示不完整由于平台不同,部分其他 Linux 平台导出的 FMU 文件可能无法在通用版安装包下运行,需要手动补充所缺系统库预览版和绿色版暂不支持软件自动检查更新
baltamatica 4.0.0_release一、新增功能1、新增内核能力(1)新增面向对象编程功能:支持类的单一继承支持定义类特性Abstract:将类标记为抽象类Sealed:密封类,不能派生子类Hidden:隐藏类支持如下属性特性GetAccess、SetAccess:支持分别对属性设置读权限和写权限Abstract:抽象属性支持如下方法特性Abstract:抽象方法Sealed:密封方法,即子类无法重写支持调用超类构造函数以及超类同名方法支持方法声明语法(仅限抽象方法)布尔类型的特性现在支持使用~表示特性值是false,例如~Hidden(2)新增语法特性:表格类型的动态属性语法支持非字符串类型的输入,例如 T.(1)以及 T.(1) = b支持结构体数组赋值时增加字段的语法,例如 s = struct('x', {1,2}); s(1).y = 1支持函数句柄绑定到插件函数和类的静态函数(3)新增BP 文件类型:现在可将类定义加密为 BP 文件,且 BP 文件对 M 脚本(非函数)的支持更加完善help函数可以读取 BP 文件中的内容(4)新增时间表(timetable)数据类型的支持(5)新增SDK能力:支持面向对象相关操作,包括读写对象属性值、获取属性列表等支持对时间表类型数据的操作增加 bxArray 之间的复制函数 bxCopyArray 和 bxCopyArrayS增加类型转化函数 bxMakeArrayComplex bxMakeArrayReal bxResetArray增加打印 bxArray 内容的函数 bxArrayToStdout bxArrayToCStr新增表格相关的函数:bxRenameTableRow 用于在表格中设置指定行名称新增持续时间数组相关的函数:bxGetDurationDisplayString 用于获取持续时间数组打印字符串2、新增主体函数(1)数学:函数名函数说明gallery生成测试矩阵pagenorm按页求矩阵或向量范数tensorprod两个张量间的张量积colperm列置换(2)计算几何(compu_geo插件):函数名函数说明boundaryshape从二维三角剖分创建 polyshapensidedpoly正多边形polybuffer围绕点、线或 polyshape 对象创建缓冲区polyshape二维多边形addboundary为 polyshape 对象添加边界rmboundary删除 polyshape 对象的边界rmholes删除 polyshape 中的孔rmslivers删除 polyshape 边界离群值polygon_rotate旋转 polyshapescale缩放 polyshapesortboundaries对 polyshape 边界进行排序sortregions对 polyshape 区域进行排序translate平移 polyshapepolygon_boundarypolyshape 边界的顶点坐标holes将 polyshape 孔边界转换为 polyshape 对象数组ishole确定 polyshape 边界是否为孔polygon_isinterior确定给定的点是否在 polyshape 内nearestvertex查询最近的 polyshape 顶点numboundariespolyshape 的边界数numsidespolyshape 的边数overlaps确定 polyshape 对象是否重叠polygon_plot绘制 polyshaperegions访问 polyshape 区域polygon_area计算 polyshape 的面积boundingboxpolyshape 的边界框centroidpolyshape 的矩心polygon_convhullpolyshape 的凸包turningdist计算 polyshape 对象之间的形变量polygon_triangulation三角剖分 polyshapepolygon_perimeter计算 polyshape 的周长polygon_intersect计算 polyshape 对象的交集polygon_subtract两个 polyshape 对象的差集polygon_unionpolyshape 对象的并集polygon_xor两个 polyshape 对象的异或stlread从 STL 文件创建三角剖分stlwrite从三角剖分创建 STL 文件(3)图论(graphtheory插件):函数名函数说明graph创建无向图结构digraph创建有向图结构addnode将新节点添加到图rmnode从图中移除节点,并删除与该节点相关的所有边addedge向图添加新边rmedge从图中删除边flipedge在有向图中反转边的方向numnodes图中的节点数numedges图中的边数findnode在图中查找节点,并返回与该节点相关的图节点对象findedge定位图中的边edgecount两个节点之间的边数reordernodes对图节点重新排序subgraph提取子图conncomp图的连通分量biconncomp双连通图分量condensation图凝聚toposort有向无环图的拓扑顺序isdag确定有向图是否为有向无环图bfsearch广度优先图搜索dfsearch深度优先图搜索shortestpath两个单一节点之间的最短路径shortestpathtree从节点的最短路径树distances所有节点对组的最短路径距离degree图节点的度indegree有向图节点的入度outdegree有向图节点的出度adjacency图邻接矩阵incidence图关联矩阵laplacian图的拉普拉斯矩阵printgraph打印图的详细信息,包括顶点和边的属性setnodeprop设置节点属性setedgeprop设置边属性(4)绘图:函数名函数说明datetick日期格式的刻度标签alphamap指定图窗透明度shrinkfaces减小补片面的大小polarbubblechart极坐标气泡图clabel为等高线图添加高程标签rectangle创建带有尖角或圆角的矩形alpha向坐标区中的对象添加透明度cmunique消除颜色图中的重复颜色;将灰度或真彩色图像转换为索引图像cmpermute重新排列颜色图中的颜色surfnorm曲面图法线pie3三维饼图surf2patch将曲面数据转换为补片数据loglog双对数刻度图semilogx半对数图(x 轴有对数刻度)semilogy半对数图(y 轴有对数刻度)patch创建彩色多边形的补片rose角直方图heatmap创建热图sortx对热图行中的元素进行排序sorty对热图列中的元素进行排序diffuse计算漫反射specular计算镜面反射(5)编程:函数名函数说明namedargs2cell将包含名称-值对组的结构体转换为元胞数组isvarname判断输入的字符串是否是合法的北太天元变量名mfilename返回当前执行的代码所在的 M 文件或类名unzip提取 zip 文件的内容zip将文件压缩到 zip 文件中untar提取 tar 文件的内容tar将文件压缩到 tar 文件中gunzip提取 GNU zip 文件的内容gzip将文件压缩到 GNU zip 文件中genpath生成搜索路径list_toolbox列出当前已授权的工具箱列表以及它们的加载状态enable_toolbox启用指定名称的工具箱disable_toolbox禁用指定名称的工具箱toolbox_help显示已加载工具箱中由动态库提供的函数名称列表(6)数据导入和分析:函数名函数说明linkaxes同步多个坐标区的范围topkrows矩阵的前k行排序iqr四分位距rescale对数据进行缩放ischange检测数据中的突变点splitapply将数据分组并应用函数findgroups查找分组并返回组号standardizeMissing插入标准缺失值(7)语言基础:函数名函数说明exceltime将北太天元日期时间转换为 Excel 日期数字posixtime将北太天元日期时间转换为 POSIX 时间juliandate将北太天元日期时间转换为儒略日期yyyymmdd将北太天元日期时间转换为 YYYYMMDD 数值m2xdate将北太天元日期转换为 Excel 日期序列值x2mdate将 Excel 日期序列值转换为北太天元日期timezones列出时区leapseconds列出 datetime 数据类型支持的所有闰秒dateshift推移日期或生成日期与时间序列timetable创建时间表数组istimetable确定输入是否为时间表stack将来自输入表的数据堆叠到输出表的一个变量中native2unicode将数值字节转换为 Unicode 字符表示形式unicode2native将 Unicode 字符表示形式转换为数值字节timetable2table将时间表转换为表table2timetable将表转换为时间表regexp匹配正则表达式(区分大小写)regexpi匹配正则表达式(不区分大小写)regexprep使用正则表达式替换文本regexptranslate将文本转换为正则表达式sscanf从字符串读取格式化数据isuniform检查数组是否均匀间隔flipdim沿着指定维度翻转矩阵cellplot以图形方式显示元胞数组的结构体(8)其它:函数名函数说明vectorize向量化表达式timeit测量运行函数所需的时间3、新增集成开发环境(IDE)功能(1)新增短信验证码登录功能(2)增加class数据展示以及交互(3)增加class相关关键字高亮以及缩进(4)工具栏增加插件和工具箱按钮(5)增加软件在线更新功能(4)增加编辑器和命令行窗口字体大小在状态栏的显示与调整功能4、新增工具箱能力(1)新增深度学习工具箱,内置模型与函数如下:类型名称说明预训练模型vgg19Pytorch预训练模型,用于执行图片预测vgg16vgg13vgg11squeezenet1_1squeezenet1_0shufflenet_v2_x2_0shufflenet_v2_x1_5shufflenet_v2_x1_0shufflenet_v2_x0_5resnet50resnet34resnet18resnet152resnet101mobilenet_v2inception_v3googlenetefficientnet_b7efficientnet_b6efficientnet_b5efficientnet_b4efficientnet_b3efficientnet_b2efficientnet_b1efficientnet_b0densenet201densenet169densenet161densenet121alexnet函数trainNetwork训练神经网络predictNetwork使用神经网络执行预测任务(2)新增代码生成工具箱可通过命令行窗口命令将m函数转化为C++代码,支持功能如下:类型子类型算符运算符算术运算符+:加法-:减法*:矩阵乘法.*:数组元素逐个乘法/:矩阵右除法./:数组元素逐个除法\:矩阵左除法.\:数组元素逐个左除法^:矩阵乘幂.^:数组元素逐个乘幂-':矩阵转置(共轭转置).':矩阵转置(非共轭)关系运算符==:等于~=:不等于>:大于<:小于>=:大于等于<=:小于等于逻辑运算符&:元素逐个与运算|:元素逐个或运算~:取反运算其他运算符::用于生成向量、索引=:赋值运算符':转置运算符.:结构体字段访问( ):用于索引数组和调用函数[ ]:用于创建数组{ }:用于创建和访问元胞数组...:行连接符,表示代码的续函数数学运算相关【abs】:取绝对值【exp】:计算指数【log】:自然对数【log10】:常用对数(底数10)【log2】:二进制对数【sqrt】:平方根【norm】:向量或矩阵的范数【sum】:求和【mean】:平均值【median】:中位数【std】:标准差矩阵和数组操作【size】:获取矩阵尺寸【length】:获取长度【numel】:获取元素数量【transpose】:转置(非共轭)【ctranspose】:共轭转置【min】:最小值【max】:最大值【ones】:创建全为1的矩阵【zeros】:创建全为0的矩阵【magic】:生成幻方矩阵【rand】:生成随机数文件操作【load】:加载文件数据【save】:保存数据到文件系统和错误处理【clear】:清除变量【disp】:显示变量值【error】:显示错误信息线性代数【eig】:求特征值和特征向量(3)新增计算机视觉工具箱包含以下函数:函数名函数说明detectFASTFeatures使用FAST算法检测角点detectHarrisFeatures使用Harris-Stephens算法检测角点detectMinEigenFeatures使用最小特征值算法检测角点detectORBFeatures检测ORB关键点detectSIFTFeatures检测SIFT特征detectSURFFeatures检测SURF特征extractFeatures提取感兴趣点的描述符(特征)extractLBPFeatures提取LBP特征extractHOGFeatures提取HOG特征extractORBFeatures提取ORB特征extractSIFTFeatures提取SIF T特征extractSURFFeatures提取SURF特征extractFREAKFeatures提取FREAK特征matchFeatures特征匹配selectStrongest选择得分最高的部分关键点selectUniform按均匀分布选择部分关键点estgeotform2d根据匹配点对估计2维几何变换estgeotform3d根据匹配点对估计3维几何变换insertMarker在图像中插入标记insertShape在图像中插入形状showMatchedFeatures显示匹配的特征点binaryFeatures用于存储二值特征向量的对象cornerPoints用于存储角点的对象ORBPoints用于存储ORB关键点的对象SIFTPoints用于存储SIFT兴趣点的对象SURFPoints用于存储SURF兴趣点的对象markORBPoints在图像中标记ORB关键点imp lotKeypoints在图像中绘制关键点(4)新增医学图像工具箱包含以下函数:类型函数名函数说明读写和空间参考medicalImage2维医学图像像素数据和元数据extractFrame提取2维医学图像序列一帧的像素数据medicalVolume3维医学图像体素数据和空间参考信息extractSlice提取3维医学图像一个切片的体素和空间细节replaceSlice替换3维医学图像一个切片的体素值sliceCorners提取3维医学图像一个切片的角体素坐标sliceLimits提取3维医学图像一个切片在患者坐标系中x, y, z的范围montage在患者坐标中以蒙太奇形式显示医学图像切片或帧medvol2struct将工具箱medical Volume对象转换为北太天元结构体(警告:建议尽量不使用该函数,面临将来弃用风险)dicominfo从DICOM文件中读取元数据dicomread读取DICOM图像getPixelData获取DICOM文件的像素数据isnrrd检查文件是否为有效NRRD文件nrrdinfo从NRRD文件读取元数据nrrdread读取NRRD图像niftiinfo从NIfTI文件读取元数据niftiread读取NIfTI图像niftiwrite使用NIfTI格式将3维医学图像写入文件预处理和增强imfilter对图像进行滤波medfilt22维中值滤波medfilt33维中值滤波imgaussfilt图像的2维高斯滤波(5)PNT工具箱包含以下函数:函数名函数说明blh2ecef经纬高坐标系转地心地固坐标系位置blh2local将经纬高坐标位置转换为以某个点建立的n系为本地坐标系之中dposrEND2drvec将卡尔曼滤波器中的位置误差估计值引起的导航坐标系旋转转换为等效旋转矢量DrawFun误差图画图功能EarthModel定义WGS84框架地球模型ecef2blh地心地固坐标系位置转经纬高euler2matrix欧拉角转方向余弦矩阵euler2quat欧拉角转四元数getgh获得大地重力矢量getRm求取子午圈曲率半径getRn求取卯酉圈曲率半径getWen_n获取导航坐标系运动引起的转动角速度getWie_n地球自转在导航坐标系的表示matrix2quat方向余弦矩阵转四元数pos2quat位置转四元数qinv四元数求逆qmult四元数相乘qmultvec实现四元数直接和3D向量乘法quat2matrix四元数转方向余弦矩阵quatmod求四元数模值quatnorm求四元数范数quatnormalize四元数归一化skew求反对称矩阵askew33求反对称矩阵Cecef2llh方向余弦矩阵转经纬高cros三维向量叉乘dpos2drv将卡尔曼滤波器中的位置误差估计值引起的导航坐标系旋转转换为等效旋转矢量EAttUpdate地心地固坐标系下的姿态更新ecef2llh地心地固坐标系位置转经纬高EPosUpdate地心地固坐标系下的位置更新EVelUpdate地心地固坐标系下的速度更新getg获得大地重力矢量GetRm求取子午圈曲率半径GetRn求取卯酉圈曲率半径getWenn获取导航坐标系运动引起的转动角速度getWien地球自转在导航坐标系的表示invq四元数求逆KFUpdate卡尔曼滤波一步预测llh2ecef经纬高转地心地固坐标系m2q方向余弦矩阵转四元数pos2q位置转四元数q2euler四元数转欧拉角q2m四元数转方向余弦矩阵q2pos四元数转位置qmul四元数相乘qmulvec实现四元数直接和3D向量乘法qnormalize四元数归一化RobustKfUpdateIGG3卡尔曼滤波量测更新rv2quat旋转矢量转四元数WAttUpdate世界坐标系下的姿态更新WPosUpdate世界坐标系下的位置更新WVelUpdate世界坐标系下的速度更新Init_Navigation_system配置函数Init_Navigation_system330配置函数Init_Navigation_system_sins配置函数Start_Navigation_System组合导航主函数Feedback卡尔曼滤波反馈修正KalmanFilterUpdate卡尔曼滤波量测更新KfPredict卡尔曼滤波一步预测LcKalmanFilterUpdate卡尔曼滤波松组合模型MechanisationSINS姿态、速度和位置更新函数Start_SINS_SystemSINS解算主函数(6)脑电工具箱包含以下函数:函数名函数说明eeg_checkchanlocs检查脑电数据集通道位置结构的一致性。eeg_checkset检查数据集参数一致性eeg_eval将脑电工具箱函数应用于输入数据集的集合eeg_getdatact从指定的数据集或组件活动中获取EEG数据eeg_getversion获取脑电版本号(版本嵌入在脚本中,编辑函数查看版本)。eeg_global声明全局脑电数据变量。eeg_hist脑电数据基的历史eeg_options选项文件/处理脑电数据选项eeg_optionsbackup脑电处理工具箱选项eeg_retrieve从所有脑电数据中检索数据集eeg_store将数据集存储到ALLEEG中eegh历史记录功能gethelpvar将m文件帮助消息头转换为输出变量getkeyval从'key', 'val'序列字符串中获取变量值。plugin_askinstall从GUI或命令行调用安装脑电处理工具箱插件。plugin_install安装脑电处理工具箱插件。由PLUGIN_ASKINSTALL调用。plugin_urlread以字符串形式返回URL的内容。plugin_urlwrite以字符串形式发送URL的内容。vararg2str使用EVAL命令将参数转换为字符串以便求值errordlg2生成一个带有指定消息和(可选)标题的弹出对话框。finputcheck检查函数{'key','value'}输入参数对inputdlg2输入功能克隆与着色并为脑电处理工具箱提供帮助。listdlg2listdlg函数克隆与着色并为脑电处理工具箱提供帮助。pophelp与 HTHELP相同,但不会在窗口下崩溃。questdlg2questdlg函数克隆与着色并为脑电处理工具箱提供帮助。supergui一个全面的GUI自动构建器。eeg_boundarytype返回边界事件。eeg_chaninds在脑电图结构中查找通道指数。eeg_decodechan给定一个输入EEG数据集结构,输出一个新的EEG数据结构,保留和/或排除指定的时间/延迟、数据点、通道和/或分段范围。eeg_eegrej脑电工具箱数据集中连续数据的拒绝部分eeg_emptyset使用默认值初始化脑电数据集结构。eeg_epoch2continuous将分段数据集转换为连续数据集,其中数据分段由边界事件分隔。eeg_epochformat将数据集的epoch信息从结构体转换为数组,反之亦然。eeg_findboundaries返回边界事件的索引eeg_interp插入数据通道eeg_isboundary检测是否是边界事项eeg_lat2point将相对于脑电数据分段的时间锁定事件的时间单位延迟转换为数据点的延迟百分比。eeg_mergelocs合并通道结构,同时保留通道顺序eeg_mergelocs_diffstruct合并通道结构,同时保留通道顺序(diffstruct)eeg_point2lat将数据点延迟转换为相对于时间锁定的延迟(以毫秒为单位)。eeg_rejmacro用于执行数据拒绝的所有pop_ functions的内部脑电处理工具箱的宏。eeg_urlatency求原始连续数据中某个时间点的原始 (ur) 延迟。pop_averef将脑电图数据集转换为平均参考值。pop_biosig使用 BIOSIG 工具箱将数据文件导入脑电处理工具箱pop_chancenter最近的笛卡尔 X,Y,Z 通道坐标pop_chancoresp自动定义两个通道位置结构 之间的对应关系(通过匹配通道标签),否则使用用户输入 GUI。pop_chanedit(编辑通道位置文件)编辑脑电数据集EEG.chanlocs的通道位置结构。pop_chansel弹出图形界面选择通道pop_editeventvals编辑EEG数据集结构中包含的事件。如果数据集是唯一的输入,则会弹出一个窗口,允许用户插入相关的参数值。pop_eegplot(绘制时间序列图)使用滚动显示器直观地检查脑电图数据。 对视觉上(和/或先前)选择的数据部分(即连续数据的延伸或整个数据周期)进行拒绝或标记。pop_epoch(分段)通过提取时间锁定在特定事件类型或事件索引上的数据分段,将连续EEG数据集转换为分段的数据。也可以对已经分段的数据集进行次分段(如果次分段大小相同或更小)。这个pop_function调用EPOCH。pop_erpimage绘制给定脑电信号通道或独立分量的erp图像图。pop_importepoch将epoch和/或epoch事件信息导出到EEG数据集的事件结构数组。pop_interp插入数据通道pop_loadset加载脑电图数据集。 如果没有参数,则弹出一个输入窗口。pop_plotdata绘制矩形阵列中 EEG 通道或独立分量的平均值。 否则,(过度)绘制单个试验。pop_plottopo使用 PLOTTOPO 以地形数组格式绘制一个或多个串联的多通道数据纪元pop_prop绘制通道或独立组件的属性。pop_readlocs加载通道位置文件(如果没有参数,则弹出交互式窗口)。pop_reref(重参考)将 EEG 数据集转换为平均参考或新的公共参考通道(或多个通道)。 调用 REREF。pop_resample(降采样 )重采样数据集(弹出窗口)。pop_runica执行独立成分分析(ICA)。使用 RUNICA、BINICA 或其他 ICA 或其他线性分解运行 EEG 数据集的 ICA 分解。pop_saveset保存一个或多个脑电图数据集结构pop_select(选择或删除通道)给定输入 EEG 数据集结构,输出保留和/或排除指定时间/延迟、数据点、通道和/或纪元范围的新 EEG 数据结构。pop_selectcomps使用按钮显示组件,以可视化其属性并将其标记为拒绝。pop_selectevent在脑电图数据集中查找事件。pop_spectopo绘制指定数据通道或成分的频谱图。pop_topoplot在图形窗口中绘制头皮图。如果输入参数的数量少于3,则弹出交互式查询窗口。 对TOPOPLOT进行(可能是重复)调用。acsobiro基于时滞协方差矩阵联合对角化的A. Chickocki's鲁棒二阶盲辨识 (Second-Order Blind Identification (SOBI))。axcopy使用鼠标左键将图形轴及其图形对象复制到新的弹出窗口。binica从命令行运行RUNICA的独立二进制版本。biosig2eeglab将BIOSIG结构转换为脑电数据结构biosig2脑电处理工具箱event将biosig事件转换为脑电数据事件结构blockave对相同大小的连接数据集进行块平均cart2topo转换xyz-笛卡儿通道坐标到极坐标cbar显示全部或部分颜色条celltomat将单元格数组转换为矩阵chancenter重新定位笛卡尔X,Y,Z通道坐标changeunits取一个轴上的一个或多个点,并给出其在另一个轴上的位置。convertlocs利用EEG.chanlocs结构在坐标系之间转换电极位置coregister与参考通道位置文件共同注册测量或模板电极位置。eegplot滚动多通道数据查看器eegrej从连续脑电图数据中剔除任意时段epoch从连续脑电数据中提取分段时间锁定到指定事件。erpimage将单个epochs绘制为图像。 绘制单次试验数据时代集合的彩色图像,可选地对输入排序变量进行排序和/或对齐,并使用高斯加权移动平均对试验进行平滑。fastif快速if函数。floatwrite将数据矩阵写入浮点文件。jader利用JADE对真实信号进行盲分离loadtxt将ASCII文本文件装入数字或单元格数组lookupchantemplate查找频道模板。matsel从给定的多分段数据矩阵中选择行、列和epochsmattocell将矩阵转换为单元格数组movav对按xval索引的数据执行移动平均。 支持使用移动的非矩形窗口。parsetxt解析文本输入到单元格数组phasecoher使用高斯小波实现试验间放大器/相干性。plotchans3d从Polhemus ELP文件绘制三维配置。plotmesh绘制由面和顶点定义的网格plottopo在拓扑图数组中绘制数据epochsreadeetraklocs读取使用EETrak数字化软件保存的3d位置文件readelp从生成的.elp(电极位置)文件中读取电极位置,例如,由Polhemus跟踪设备生成readlocs从文件中读取电极位置坐标和其他信息。readneurodat读取神经扫描位置文件(.dat)readneurolocs读取神经扫描电极定位文件(.asc)reref重新参考数据runica运行Infomax ICA分解 对输入数据进行独立成分分析(ICA)分解sbplot在任意子图网格位置和大小中创建轴sobi基于相关矩阵联合对角化的二阶盲识别(SOBI) 。spec功率谱。如果信号处理工具箱不存在,这个函数将取代PSD函数。它使用TIMEF函数。spectopo绘制所有通道的频谱和头皮图。 在所有通道上绘制winsize数据时代长度段的功率谱密度(PSD)作为一束迹线。sph2topo将球面坐标的3列头部图文件转换为极坐标(非圆柱)坐标的3列topoplot文件。spherrorCHANCENTER子函数用于计算笛卡尔坐标到球体的最小距离textsc在屏幕坐标中放置文本,并在图的顶部放置标题。topo2sph将topoplot样式的2d极坐标通道位置文件转换为用于headplo的3d球文件topoplot绘制头皮图trial2eegplot将脑电数据格式转换为拒绝窗口的eplot格式anova1_cell使用ANOVA计算细胞阵列中的f值anova1rm_cell使用重复测量ANOVA计算细胞阵列中的f值。anova2_cell使用方差分析(ANOVA)计算单元格数组中的f值。anova2rm_cell使用方差分析(ANOVA)计算单元格数组中的f值。concatdata将存储在单元数组中的数据连接到单个数组中。只沿着最后一个维度进行连接corrcoef_cell使用数组和单元格数组输入计算pairwise相关性。fdr计算误检率掩码stat_surrogate_ci在观察样本来自给定代理分布的零假设下计算经验p值。stat_surrogate_pvals计算在观察到的样本来自给定替代分布的零假设下的经验p值。statcond使用基于标准参数或非参数排列的方差分析(1-way或2-way)或t检验方法对两个或多个数据条件进行统计比较。statcondfieldtrip与statcond相同,只是它使用fieldtrip的统计函数。surrogdistrib构建代理分发ttest cell计算配对t检验。ttest2_cell计算非配对t检验。angtimewarp给定两个事件标记向量,计算输入角时间序列的翘曲,使其evlatencies与newlatencies匹配。timef返回单个输入时间序列的平均事件相关谱扰动(ERSP)和试次间一致性(ITC)变化的估计值和图表。timewarp给定两个事件标记向量,计算一个矩阵,可用于扭曲时间序列,使其事件延迟与新延迟匹配。std_chaninds在STUDY中查找通道索引averef注意,这个旧功能在脑电处理工具箱中没有被使用。脑电处理工具箱使用的函数是reff。help2html将m文件帮助消息头转换为.html帮助文件runpca使用SVD或SVDS使用奇异值分解(SVD)执行主成分分析(PCA)mmo创建内存映射数据类eegplugin_firfilt脑电处理工具箱插件用于使用线性相位FIR滤波器过滤数据findboundaries在连续EEG数据集的事件结构中寻找边界(数据不连续)fir_filterdcpadded用DC常数和滤波器填充数据firfilt脑电处理工具箱插件用于使用线性相位FIR滤波器过滤数据 使用DC常数填充数据,使用FIR滤波器过滤数据, 并通过滤波器的群延迟移动数据。firfiltreport过滤器参数报告firfiltsplit在不连续处分割数据并转发到直流填充滤波器功能firgauss高斯低通FIR滤波器firws设计I型windowed sinc线性相位FIR滤波器firwsord估计windowed sinc FIR滤波器的顺序取决于窗口类型和请求的过渡带宽invfirwsord估计windowed sinc FIR 滤波器过渡频带宽度invkaiserbeta估计Kaiser beta的最大通带偏差/波动kaiserbeta估计Kaiser window betaminphaserceps将FIR滤波器系数转换为最小相位plotfresp绘制滤波器的脉冲、阶跃、幅度和相位响应pop_eegfiltnew使用Hamming windowed sinc FIR滤波器过滤数据pop_firma使用移动平均FIR过滤器过滤数据(弹窗模式)pop_firpm使用Parks-McClellan FIR滤波器过滤数据(弹窗模式)pop_firpmord估计Parks-McClellan filter order和权重(弹窗模式)pop_firws使用windowed sinc FIR 过滤器过滤数据(弹窗模式)pop_firwsord估计 windowed sinc 过滤器阶数依据窗口类型和要求的过渡带的宽度(弹窗模式)pop_kaiserbeta估计Kaiser window beta (弹窗模式)pop_xfirws设计和导出xfir兼容的windowed sinc FIR滤波器windows对称窗口函数已有工具箱强化:(6)统计与机器学习工具箱由统计工具箱与机器学习工具箱合并,并新增以下函数:函数名函数说明randsample随机采样grp2idx从分组变量创建索引向量parallelcoords平行坐标图kstestKolmogorov-Smirnov 检验andrewsplot安德鲁斯图biplot双标图(双重图)glyphplot创建星形图datasample以替换或非替换方式随机抽样nancov协方差矩阵,忽略 NaNscapaplot绘制概率图controlrulesWestern Electric -Nelson 控制规则fsurfht交互式等值线图wblplotWeibull 概率图crosstabCross-tabulationpolyconf多项式置信区间random随机数生成caseread从文件中读取个案名称casewrite个案名称写进文件中cdfplot经验累积分布函数 (cdf) 图hist3双变量直方图lsline向散点图添加最小二乘线条gplotmatrix按组划分的散点图矩阵ecdfhist基于经验累积分布函数的直方图nearcorr通过最小化 Frobenius 距离计算最近的相关矩阵mlecov绘制Weibull 概率分布gmdistribution高斯混合分布类pdf高斯混合分布的概率密度函数cdf高斯混合分布的累积分布函数random高斯混合分布的随机变量fitgmdist将高斯混合分布拟合到数据mahalX 到各成分均值的 Mahalanobis 距离cluster针对高斯混合分布对数据进行聚类posterior给定数据的成分后验概率meanEffectSize单样本或双样本效应大小计算bootstrpBootstrap 抽样jackknifeJackknife 抽样bootciBootstrap 置信区间manova1单因素多变量方差分析grpstats按组的汇总统计lillietest验证multcomparemultcomparesampsizepwr样本大小和检验力controlchartShewhart 控制图gagerr量具重复性和再现性研究refcurve将参考曲线添加到绘图中anovanN 因素方差分析robustcov稳健的多变量协方差和均值估计kmedoidsk中心点聚类pca对原始数据的主成分分析pcacov对协方差矩阵的主成分分析cluster从 linkages 构建聚集集群clusterdata从数据构建聚集集群cophenet遗传相关系数inconsistent计算非一致性系数linkage聚集分层聚类树pdist成对观测值之间的两两距离squareform格式化距离矩阵dbscan基于密度的噪声应用空间聚类spectralcluster谱聚类robustcov已归类为统计mahal马氏距离pdist2两组观测值之间的成对距离dendrogram树状图optimalleaforder层次聚类的最优叶排序manovacluster多元方差分析之后的群平均聚类的树状图silhouette为聚类数据绘制轮廓图。canoncorr阵样本特征系数和相关性pcares主成分分析残差ppca基于概率的主成分分析kmeansk 均值聚类createns创建最近邻对象hmmgenerate生成隐马尔科夫模型的序列hmmdecode隐马尔可夫模型后验状态概率hmmestimate从发射和状态中估计隐马尔可夫模型的参数hmmtrain从观测序列中估计隐马尔可夫模型的参数hmmviterbi隐马尔可夫模型最可能状态路径plsregress偏最小二乘法 (PLS) 回归stepwisefit使用逐步回归的拟合回归模型fsulaplacian使用 Laplacian 分数对无监督学习的特征进行排名factoran因子分析cmdscale经典多维尺度分析procrustesProcrustes分析nlinfit非线性回归relieff使用ReliefF或RReliefF算法对预测因子的重要性进行排序rotatefactors旋转因子载荷mdscale非经典多维标度nlpredci非线性回归预测置信区间knnsearchKNN搜索(使用数据)knnsearch_objKNN搜索(使用对象)rangesearch指定距离的KNN搜索(使用数据)rangesearch_obj指定距离的KNN搜索(使用对象)nnmf非负矩阵分解(7)偏微分方程工具箱新增以下函数:函数名函数说明Gauss_quadrature_for_line_integral_test_triangle对三角形单元进行测试的线积分的高斯积分计算。applyBoundaryCondition应用边界条件,为椭圆方程施加边界条件。applyDirichBoundConParabolic应用边界条件,为抛物方程施加第一类边界条件(Dirichlet边界条件)。applyDirichBoundConParabolicTime应用边界条件,为抛物方程当前时间节点施加第一类边界条件(Dirichlet边界条件)。applyNeumBoundConParabolic应用边界条件,为抛物方程施加第二类边界条件(Neumann边界条件)。applyRobinBoundConParabolicMatrix应用边界条件,为抛物方程刚度矩阵施加第三类边界条件(Robin边界条件)。applyRobinBoundConParabolicVector应用边界条件,为抛物方程右端向量施加第三类边界条件(Robin边界条件)。applySystemBoundaryCondition应用系统边界条件,为整体系统设置边界约束。applySystemDirichBoundConParabolic应用边界条件,为抛物方程系统施加第一类边界条件(Dirichlet边界条件)。applySystemDirichBoundConParabolicTime应用边界条件,为抛物方程时间步中施加系统级的第一类边界条件(Dirichlet边界条件)。assembleEigenmodesMatrix矩阵组装器,组装特征模态的线性系统矩阵。assembleEllipticMatrix矩阵组装器,为椭圆方程组装线性系统刚度矩阵。assembleEllipticVector向量组装器,为椭圆方程组装线性系统右端向量。assembleFEMatrices有限元线性系统组装器,组装有限元问题的各种线性系统矩阵。assembleParabolicMatrix矩阵组装器,为抛物方程组装线性系统刚度矩阵。assembleParabolicVector向量组装器,为抛物方程组装线性系统右端向量。createPDEResults创建PDE结果,用于存储和处理已求解的PDE模型的结果。createpde创建PDE模型,用于创建要求解的PDE模型结构体。evaluateHeatFlux评估热溶液在节点或任意空间位置的热通量。evaluateHeatRate计算法向指定边界的综合热流率。evaluatePrincipalStrain计算节点位置的主应变。evaluatePrincipalStress评估节点位置的主应力。evaluateReaction计算边界上的反作用力。evaluateStrain评估动态结构分析问题的应变。evaluateStress评估动力结构分析问题的应力。evaluateTemperatureGradient计算热溶液在任意空间位置的温度梯度。evaluateVonMisesStress评估动态结构分析问题的冯米塞斯应力。gaussQuadEllipticMatrix矩阵单刚组装器,用于椭圆方程组装线性系统刚度矩阵。gaussQuadEllipticVector向量单刚组装器,用于椭圆方程组装线性系统右端向量。gaussQuadParabolicMatrix矩阵单刚组装器,用于抛物方程组装线性系统刚度矩阵。gaussQuadParabolicMatrixBoundary矩阵单刚组装器,用于抛物方程边界处理组装线性系统刚度矩阵。gaussQuadParabolicVector向量单刚组装器,用于抛物方程组装线性系统右端向量。gaussQuadParabolicVectorBoundary向量单刚组装器,用于抛物方程边界处理组装线性系统右端向量。generateBoundaryNodesEdges用于生成网格边界的边与边界节点信息。generateMesh用于生成计算域的网格。generate_Gauss_local_1D用于生成一维局部单元的高斯积分点。generate_Gauss_local_2D用于生成二维局部单元的高斯积分点。generate_Gauss_local_triangle用于生成三角形局部单元的高斯积分点。generate_Gauss_reference_1D用于生成一维参考单元的高斯积分点。generate_Gauss_reference_triangle用于生成二维三角参考单元的高斯积分点。generate_M_T_triangle用于生成网格信息矩阵,适用于三角形单元。getInitialVector用于生成初始向量,适用于依赖时间的方程。getInitialVectorPU用于生成一阶导数初值向量与矩阵,适用于依赖时间的方程。interpolateAcceleration对动态结构模型的所有时间或频率步长在任意空间位置插入加速度。interpolateCurrentDensity在任意空间位置插值直流导通结果中的电流密度。interpolateDisplacement在任意空间位置插值位移。interpolateElectricField在任意空间位置插值静电或直流传导结果中的电场。interpolateElectricFlux在任意空间位置插值静电结果中的电通量密度。interpolateElectricPotential在任意空间位置插值静电或直流传导结果中的电势。interpolateHarmonicField在任意空间位置插值谐波结果中的电场或磁场。interpolateMagneticField在任意空间位置插值静磁结果中的磁场。interpolateMagneticFlux在任意空间位置插值静磁结果中的磁通密度。interpolateMagneticPotential在任意空间位置插值静磁结果中的磁势。interpolateSolution将PDE解插值到任意点。interpolateStrain在任意空间位置插值应变。interpolateStress在任意空间位置插值应力。interpolateTemperature在任意空间位置的热结果中插入温度。interpolateVelocity对动态结构模型的所有时间或频率步长在任意空间位置插入速度。interpolateVonMisesStress在任意空间位置插值冯米塞斯应力。mainSolveConductiveMediaDCElliptic用户界面,求解直流导电介质的椭圆方程。mainSolveDiffusionElliptic用户界面,求解扩散问题的椭圆方程。mainSolveElectrostaticsElliptic用户界面,求解静电学问题的椭圆方程。mainSolveGenericScalarEigenmodes用户界面,求解标量场的特征模态。mainSolveGenericScalarElliptic用户界面,求解标量椭圆方程。mainSolveGenericScalarHyperbolic用户界面,求解标量双曲方程。mainSolveGenericScalarParabolic用户界面,求解标量抛物方程。mainSolveHeatTransferElliptic用户界面,求解热传导问题的椭圆方程。mainStructuralMechPlaneStrainEigenmodes用户界面,求解结构力学平面应变问题的特征模态。mainStructuralMechPlaneStrainElliptic用户界面,求解结构力学平面应变问题的椭圆方程。mainStructuralMechPlaneStressEigenmodes用户界面,求解结构力学平面应力问题的特征模态。mainStructuralMechPlaneStressElliptic用户界面,求解结构力学平面应力问题的椭圆方程。mainsolveDiffusionParabolic用户界面,求解扩散问题的抛物方程。mainsolveHeatTransferParabolic用户界面,求解热传导问题的抛物方程。mianSolveACPowerElectromagneticsElliptic用户界面,求解交流电磁学问题的椭圆方程。mianSolveGenericSystemEigenmodes用户界面,求解通用系统的特征模态。mianSolveGenericSystemElliptic用户界面,求解通用系统的椭圆方程。mianSolveGenericSystemHyperbolic用户界面,求解通用系统的双曲方程。mianSolveGenericSystemParabolic用户界面,求解通用系统的抛物方程。mianSolveMagnetostaticsElliptic用户界面,求解静磁学问题的椭圆方程。pdemesh网格可视化,用于绘制PDE模型的网格。pdemesh_main用户界面,用于创建和可视化PDE模型的网格。seidel用于求解线性方程组的Gauss-Seidel迭代法。setBoundaryConditions为PDE模型设定边界条件。setEquationCoefficients为PDE模型设定方程系数。setGeometry为PDE模型设定求解几何结构。setInitialConditions为PDE模型设定初值条件。setIsTimeDependent为PDE模型设定是否为时间相关的问题。setMesh为PDE模型设定网格。setPDEModel为PDE模型设定类型和基本属性。setPDESystemSize为PDE模型设定系统的维度和规格。solveACPowerElectromagneticsElliptic标量椭圆方程求解器,用于求解交流电磁学问题。solveConductiveMediaDCElliptic标量椭圆方程求解器,用于求解直流导电介质问题。solveDiffusionElliptic标量椭圆方程求解器,用于求解扩散问题。solveDiffusionParabolic标量抛物方程求解器,用于求解扩散问题。solveElectrostaticsElliptic标量椭圆方程求解器,用于求解静电学问题。solveGenericScalarEigenmodes标量特征模态求解器,用于通用标量场的特征模态。solveGenericScalarElliptic标量椭圆方程求解器,用于求解通用标量场问题。solveGenericScalarHyperbolic标量双曲方程求解器,用于求解通用标量场问题。solveGenericScalarParabolic标量抛物方程求解器,用于求解通用标量场问题。solveGenericSystemEigenmodes向量特征模态求解器,用于通用系统的特征模态。solveGenericSystemElliptic向量椭圆方程求解器,用于求解通用系统问题。solveGenericSystemHyperbolic向量双曲方程求解器,用于求解通用系统问题。solveGenericSystemParabolic向量抛物方程求解器,用于求解通用系统问题。solveHeatTransferElliptic标量椭圆方程求解器,用于求解热传导问题。solveHeatTransferParabolic标量抛物方程求解器,用于求解热传导问题。solveMagnetostaticsElliptic标量椭圆方程求解器,用于求解静磁学问题。solveStructuralMechPlaneStrainEigenmodes向量特征模态求解器,用于求解结构力学平面应变问题。solveStructuralMechPlaneStrainElliptic向量椭圆方程求解器,用于求解结构力学平面应变问题。solveStructuralMechPlaneStressEigenmodes向量特征模态求解器,用于求解结构力学平面应力问题。solveStructuralMechPlaneStressElliptic向量椭圆方程求解器,用于求解结构力学平面应力问题。triangular_local_basis用于生成有限元局部单元的基函数,适用于三角形单元。triangular_reference_basis用于生成有限元参考单元的基函数,适用于三角形单元。(8)图像处理工具箱新增以下函数:函数名函数说明dicominfo从DICOM文件中读取元数据dicomread读取DICOM图像chromadapt通过色彩自适应调整RGB图像的色彩平衡illumgray使用灰度世界算法估计照度illumwhite使用White Patch Retinex算法估计照度lin2rgb对线性RGB值应用伽马校正rgb2lin线性化伽马校正的RGB值whitepoint标准光源的XYZ颜色值colorangle两个RGB向量的夹角deltaE基于CIE76标准的色差imcolordiff基于CIE94或CIE2000标准的色差phantom创建头部模拟图像imblend融合2幅图像montage将多幅图像显示为矩形蒙太奇imcrop3裁剪3维图像imresize3调整3维图像大小imrotate3旋转3维图像fitgeotform3d根据控制点对拟合3维几何变换affinetform3d3维仿射几何变换rigidtform3d3维刚性几何变换simtform3d3维相似几何变换transltform3d3维平移几何变换randomAffine3d创建随机3维仿射变换tformfwd应用N维正向几何变换tforminv应用N维逆几何变换imref3d将3维图像参考到世界坐标affineOutputView为形变图像创建输出视图intrinsicToWorld从固有坐标转换为世界坐标worldToIntrinsic从世界坐标转换为固有坐标sizesMatch确定空间参考对象和图像是否大小兼容imregister基于强度的图像配准imregconfig配置基于强度的配准imregtform估计对齐两幅2维或3维图像的几何变换imregcorr使用互相关估计对齐两幅2维图像的几何变换imregmtb使用中值阈值位图配准2维图像normxcorr2归一化二维互相关性MattesMutualInformationMattes互信息度量配置MeanSquares均方误差度量配置RegularStepGradientDescent常规步进梯度下降优化器配置imgaussfilt33维图像的3维高斯滤波medfilt33维中值滤波imboxfilt33维图像的3维框滤波imbilatfilt使用高斯核对图像进行双边滤波imnlmfilt图像的非局部均值滤波integralImage33维积分图integralBoxFilter3积分图3维框滤波imreducehaze去雾Circle圆形ROICrosshair十字线ROIEllipse椭圆形ROILine线ROIPoint点ROIPolygon多边形ROIPolyline折线ROIRectangle矩形ROIdrawcircle创建圆形ROIdrawcrosshair创建十字线ROIdrawellipse创建椭圆形ROIdrawline创建线ROIdrawpoint创建点ROIdrawpolygon创建多边形ROIdrawpolyline创建折线ROIdrawrectangle创建矩形ROIdraw绘制ROIreduce降低ROI中点的密度inROI确定点是否位于ROI内createMask由ROI创建二值掩膜图像roipoly由多边形ROI创建二值掩膜图像poly2mask将ROI多边形转换为区域掩膜inpaintCoherent使用基于相干传输的图像修复来复原特定图像区域inpaintExemplar使用基于样本块的图像修复来复原特定图像区域roicolor根据颜色选择ROIreducepoly使用Ramer-Douglas-Peucker算法降低ROI中点的密度bwskel提取骨架deconvlucy使用Lucy-Richardson方法去除图像模糊deconvwnr使用Wiener滤波去除图像模糊edgetaper使用点扩散函数模糊图像边缘otf2psf将光学传递函数转换为点扩展函数psf2otf将点扩展函数转换为光学传递函数col2im将矩阵列重新排列成块im2col将图像块重新排列成列watershed分水岭变换gradientweight根据图像梯度计算图像像素的权重graydiffweight根据灰度强度差异计算图像像素的权重label2idx将标记矩阵转换为元胞数组boundarymask计算分割的区域边界jaccardJaccard指标diceDice指标bwboundaries跟踪二值图像中的对象边界bwtraceboundary在二值图像中跟踪对象边界imfindcircles使用Hough变换查找圆circles2mask由圆创建二值掩模图像radonRadon变换iradon逆Radon变换regionprops测量图像区域的属性bwconvhull从二值图像生成凸包图像bweuler二值图像的欧拉数bwboundingbox包含二值图像区域的最小外接框的位置和大小bwcentroid二值图像区域的质心bwconvexarea二值图像区域凸包图像的面积bwconveximage二值图像区域凸包图像bweccentricity与二值图像区域具有相同二阶矩的椭圆的偏心率bwequivdiameter与二值图像区域面积相同的圆的直径bwextent二值图像区域中的像素数与边界框中总像素数的比率bwextrema二值图像区域中的极值点bwf illedarea二值图像区域填充图像的面积bwf illedimage二值图像区域填充图像bwmajoraxislength二值图像中与区域具有相同归一化二阶中心矩的椭圆长轴长度bwminoraxislength二值图像中与区域具有相同归一化二阶中心矩的椭圆短轴长度bworientationx轴与椭圆长轴(该椭圆与区域具有相同二阶矩)之间的角度bwperimeter二值图像区域的周长bwpixelidx list二值图像区域中像素的线性索引bwpixellist二值图像区域中像素的位置bwsolidity二值图像区域凸包中区域内像素所占比例impixel像素颜色值bwdist二值图像的距离变换bwdistgeodesic二值图像的测地距离变换graydist灰度图像的灰度加权距离变换mean2矩阵元素的均值std2矩阵元素的标准差corr22维相关系数bwareafilt按面积从二值图像中提取对象bwselect在二值图像中选择对象bwlabel标记2维二值图像中的连通分量bwlabeln标记二值图像中的连通分量entropy灰度图像的熵graycomatrix从图像创建灰度共生矩阵graycoprops根据灰度共生矩阵计算特征imcontrast对比度调整工具registrationEstimator图像配准器imageRegionAnalyzer图像区域分析器(9)控制系统工具箱新增以下函数:函数名函数说明dss描述性ss的模型pidpid控制器pidstd标准结构的pid控制器piddata获取pid控制器的因子filtDSP格式的离散传递函数rss随机连续传递函数drss随机离散传递函数sparss解析状态空间模型sparssdata提取状态空间模型参数step阶跃响应initial脉冲响应初始化lsim给定输入的系统响应isct判断模型是否连续isdt判断系统是否离散isempty判断系统是否为空isfinite判断系统参数为无穷isproper判断模型是否合理isreal判断模型参数是否为实数issiso判断系统是否为单输入单输出isstable判断系统是否稳定isstatic判断系统是静态还是动态order模型阶次ndims模型维度size模型输入和输出维度bodemagbode幅值图stepinfo阶跃信息lsiminfo仿真信息norm模型范数damp模型阻尼和固有频率pzmap极点和零点图5、新增北太真元功能(1)增加仿真调试功能,支持步进、步退、继续、停止调试功能,并能通过鼠标单击模块间连线添加值标签,实时查看端口输出(2)新增画布快捷操作快捷键操作鼠标中键+鼠标左键画布自由拖动空格键+鼠标左键画布自由拖动空格键 + 上、下、左、右方向键画布上下左右方向平移Ctrl + 滚轮画布上下方向平移Shift + 滚轮画布左右方向平移(3)增加缩略图功能,拖动画布会展示画布缩略图(4)新增快捷键提示,当画布处于选中状态时,长按空格键会在界面右下角出现快捷键操作提示(5)新增基础计算单元:基础计算单元分类功能说明ASCII2Stringstring将ASCII码值转换为string输出stringComparestring比较字符串是否相等stringConcatenatestring串联各个字符串以形成一个字符串stringConstantstring字符常数stringContainsstring是否存在子字符串stringConutstring指定子字符串在输入字符串中出现的次数stringEndWithstring字符串是否以指定子字符串结束stringFindstring返回第一个匹配到子字符串的索引stringLengthstring输出字符串长度stringStartWithstring字符是否以指定子字符串开始string2ASCIIstring字符串转ascii码值,输出uint8即32位subStringstring从字符串中提取指定长度的子字符串createDiagonalMatrixmatrix operations把对角矩阵转成满矩阵crossProductmatrix operations两个3x1向量叉积extractDiagonalmatrix operations提取满矩阵的主对角线hermitianTransposematrix operations矩阵的共轭转置identityMatrixmatrix operations创建单位矩阵isHermitianmatrix operations判断输入的矩阵是否是共轭矩阵或斜共轭矩阵isSymmetricmatrix operations判断输入的矩阵是否是对称矩阵或斜对称矩阵isTriangularmatrix operations判断输入是否是上三角矩阵或下三角矩阵matrixMultiplymatrix operations矩阵乘法matrixSquarematrix operations计算矩阵平方transposematrix operations矩阵转置cos+jsinmath复指数coshmath双曲余弦expmath指数fixmath向零舍入floormath向负无穷舍入hypotmath平方和的平方根(斜边)matirxConcatenatematrix operations连接数据以生成矩阵reshapemath将输入信号转换为指定的信号维度输出,支持输出行向量或列向量gainmath新增矩阵增益integratorcontinuous新增积分绕回delaydiscretes支持初始条件参数设置为矩阵和标量outoutputs支持字符串信号的显示toWorkspaceoutputs支持字符串信号的显示matrixDividematrix operations通过操作符设置矩阵的乘除操作(6)新增行业计算单元:行业计算单元分类功能说明Zonal Harmonic Gravity Model航空模块库根据行星重力势计算特定位置行星重力的纬向谐波表示Quaternion Interpolation航空模块库在两个四元数之间插值LLA to ECEF Position航空模块库从大地纬度、经度和高度计算以地球为中心的地球固定(ECEF)位置Interpolate Matrix x航空模块库为给定的输入x_k和x_f返回插值矩阵,输入必须来自Simulink Prelookup 块Self_Conditioned航空模块库以自定义形式实现状态空间控制器[A,B,C,D]Planetary Gear汽车传动系统模块库带有太阳、行星和环形齿轮的齿轮列车CI Controller汽车传动系统模块库压缩点火控制器,包括空气质量流量、扭矩和EGR估计Surface Mount PM Controller汽车传动系统模块库用于表面安装永磁同步电动机的基于转矩的、面向场控制器Dryden Wind Turbulence Model Continuous +q -r航空模块库干燥风湍流模型Von Karman Wind Turbulence Model Continuous +q -r航空模块库冯·卡曼湍流模型Dryden Wind Turbulence Model Discrete +q -r航空模块库干燥风湍流模型Dryden Wind Turbulence Model Continuous +q +r航空模块库干燥风湍流模型Von Karman Wind Turbulence Model Continuous +q +r航空模块库冯·卡曼湍流模型Dryden Wind Turbulence Model Discrete +q +r航空模块库干燥风湍流模型Dryden Wind Turbulence Model Continuous -q +r航空模块库干燥风湍流模型Von Karman Wind Turbulence Model Continuous -q +r航空模块库冯·卡曼湍流模型Dryden Wind Turbulence Model Discrete -q +r航空模块库干燥风湍流模型ECEF Position to LLA航空模块库从地球中心地球固定位置(ECEF)计算行星椭球上方的大地纬度、经度和高度Interpolate Matrix x y航空模块库为给定输入返回插值矩阵Interpolate Matrix x y z航空模块库为给定输入返回插值矩阵Direction Cosine Matrix to Rodrigues航空模块库将方向余弦矩阵转换为欧拉-罗德里格斯向量Ideal Airspeed Correction航空模块库计算指示空速和真实空速3dof (Body Axes)航空模块库执行与体轴相关的三自由度运动方程3dof (Wind Axes)航空模块库执行与风轴相关的三自由度运动方程Custom Variable Mass 3dof(Body Axes)航空模块库执行自定义可变质量相对于体轴的三自由度运动方程Custom Variable Mass 3dof(Wind Axes)航空模块库执行自定义可变质量相对于风轴的三自由度运动方程Simple Variable Mass 3dof (Body Axes)航空模块库简单可变质量相对于体轴的三自由度运动方程Simple Variable Mass 3dof (Wind Axes)航空模块库执行简单可变质量相对于风轴的三自由度运动方程Rotation Angles to Rodrigues航空模块库将旋转角转换为欧拉-罗德里格斯向量Rodrigues To Quaternion航空模块库将欧拉-罗德里格斯向量转换为四元数Rodrigues to Direction Cosine Matrix航空模块库将欧拉-罗德里格斯向量向方向余弦矩阵转换的模块6DOF Quaternion航空模块库机体轴的六自由度运动方程的四元数表示Attitude Profile Nadir Pointing航空模块库计算最短的四元数旋转(7)新增行业模型:行业模型分类飞发一体化综合仿真航空航天类模型类飞机发动机模型航空航天类模型类飞机起落架仿真航空航天类模型类机电液执行机构机械系统模型库汽车控制应用层开发汽车模拟类模型库热力学冷却系统控制系统类模型库数字卫星仿真平台航空航天类模型类卫星姿轨模型航空航天类模型类无人机飞行控制航空航天类模型类永磁直流电机模型机械系统模型库二、优化功能1、内核优化(1)优化函数名+花括号调用时的报错信息,例如 funname{i}会提示funname是函数,不能使用花括号访问(2)支持使用变量列表直接对多个输出进行赋值,[x, y] = c{:},[x, y] = s.x(3)当等号左侧是变量列表时,输入参数不足时会给出错误提示,例如 [x, y, z] = c{1:2}(4)对于数学常量 Inf NaN pi i j eps 开头的语句,将不会被识别为命令语法。例如 i *1 或 inf *nan 等(5)在类的构造函数返回前强制修改第一个输出参数的类型,现在会报错(6)内核在启动时会自动加载 btmulink 和 MatrixFunctions 两个插件(7)优化元胞数组打印空字符向量的逻辑,现在会显示为 0x0 char(8)优化 M 文件中帮助文档的解析写在 function 或 classdef 之后的文档可以有缩进,且前导空行会被忽略对于无帮助文档的 M 文件,会简要显示文件的类型(函数、脚本、类)(9)SDK 优化插件重载函数和普通插件函数调用的优先级,现在插件重载函数会优先考虑,避免在存在同名普通插件函数时重载函数失效的问题2、函数优化函数名优化内容input支持input(prompt, 's')这种用法,将输出解释为字符串;屏蔽字符串求值时的中间输出;提示符支持换行等特殊字符;在非交互前端下该函数会报错,而不是无限等待list_plugins重构函数功能,显示目前可读取到的插件名称、简介、以及加载状态,在之前的版本只显示已加载插件名;可以将函数输出赋值到结构体中记录信息narginchk、nargoutchk支持第二个参数取 inf表示不对上限进行限制add, minus, reshape, string支持日期时间数据类型any, all支持高维数组,NaN,稀疏矩阵var, std, median支持高维数组,NaN;并提高计算效率horzcat, vertcat支持日期时间、表和时间表数据类型sort, issorted支持高维数组;支持 datetime, duration 数据类型char支持高维数组;支持函数句柄和日期时间数据类型cellfun, structfun支持 cell, duration, calendarDuration 数据类型kron支持整型数据和 logical 数据fix, ceil, floor, round支持整型数据类型num2cell支持高维数组和稀疏矩阵circshift, fftshift, ifftshift, writematrix支持高维数组length支持日期时间、表、时间表数据类型lt, le, gt, ge, eq, noteq支持稀疏矩阵nnz, nonzeros支持稀疏 logical 数据类型getField支持表数据类型isa支持自定义类repmat提升计算效率rmfield,isfield支持输入多个字段load支持加载不在当前路径但在路径管理目录下的数据文件exist支持判断所有文件是否存在error支持处理空数组eps支持 realmax 处理.支持圆点修改表变量{}支持输入逻辑索引isprime提升计算效率全部绘图函数支持用户输入高维数据支持用户在对数坐标轴上进行图形的绘制figure支持对figure函数创建的图形对象设置Position和Visible属性surf,surfc,surface,mesh,meshc,meshz支持为三维曲面/网格图设置三维RGB颜色数组支持将三维曲面/网格图的CDataMapping属性设置为'direct'axes,polaraxes支持获取axes和polaraxes函数所创建图形对象的InnerPosition属性值gscatter支持使用默认色序绘制分组散点图rticks,thetaticks支持用户输入多个坐标区alpha支持为具有透明性相关属性的图形对象设置透明度bar,barh支持在坐标轴范围为无限值时绘制条形图支持输入inf、nan数据lines支持输入复数/小数获取颜色数组统计与机器学习工具箱/refline支持refline(ax,___)语法优化工具箱/fminunc, fseminf, fsolve, lsqncommon实现 fminunc fseminf fsolve lsqncommon 梯度检验功能3、集成开发环境(IDE)优化(1)北太天元软件界面风格全新改版(2)工具箱控制界面改版4、字符前端(CLI)优化(1)支持启动时显示当前北太天元版本号信息5、北太真元优化(1)模块库分类调整,可调整目录结构不影响模型显示(2)北太真元全新界面改版三、修复问题1、内核问题修复(1)取下标/赋值修复 a{}这类无参数取cell分量会闪退的问题修复 pi = 2 * pi 这类语句无法正常执行的问题(赋值前是函数,赋值后是变量)修复使用 [c{:}] 形式的语句获取返回值后,造成后续函数调用可能闪退的问题修复函数中需要输出但未对 varargout 赋值时,没有出现报错信息的问题修复 s.x(ind) = rhs 当结构体 s 存在但未定义字段 x 时,不能正确赋值的问题修复结构体数组嵌套调用分量+字段+分量引起的闪退,例如 s(1).a(1) 或 s.a.b(1)修复了一个结构体数组进行嵌套增加字段时软件会闪退的问题,例如 a(1).b(1).c = 1修复了第一个输出形参为 varargout 时,输出变量为 ans 会被赋值为 cell 的问题(2)匿名函数/函数句柄修复函数句柄调用在某些情况下输出参数个数判断错误的问题修复匿名函数中存在分号分隔的 cell 无法正确定义的问题,例如 @(x) {1 x; x 2}(3)面向对象修复当 classdef 内容为空时,调用构造函数会闪退的问题修复类定义语句中 properties ~ end 或 methods ~ end 之间无内容,解释器会报语法错误的问题类的构造方法调用也遵循方法的权限。即 Access 权限声明为 protected 和 private 的构造方法无法在类外部调用各种特性(类、属性、方法)仅能指定一次,重复指定现在会报错修复生成 classdef 对象后,再将类修改为非法定义,下次输出对象时会有多余的 '变量名 =' 信息的问题修复使用圆点语法obj.fun()调用成员方法时,若方法内部修改了obj属性, 入参会被直接修改的问题修复布尔类型特性值设置非法时软件会闪退的问题修复属性初值不能是函数句柄类型的问题修复了静态保护/私有方法可以被其他类(非子类)调用的问题(4)运算符与函数调用修复交互式执行多行脚本时,若第一行存在续行符...,第一行之后的内容会被解释器忽略的问题修复 otherwise 只有一条语句时,无输出参数的函数调用输出个数会识别成 1 个的问题修复函数名和括号中有空格会被识别为命令语法的问题,如fun (x)修复&&与||运算符第二个参数求值错误,报错信息会重复显示的问题修复在某些情况下对()求值出错,ans变量会被赋值为error的问题修复某些运算符、函数调用等语句加分号不会输出 ans 变量的问题(5)调试器修复了条件断点进行判断时可能的闪退问题修复了断点与条件断点相互覆盖时,后设置的断点不生效的问题修复使用 dbquit() 函数退出调试,命令行会显示 1x1 error ans 变量的问题(6)数据类型修复表格中包含带有控制字符的 char 数组,会报错 basic_string::_M_create 的问题修复持续时间数组中 Inf-Inf的显示问题修复元胞数组中高维空矩阵会显示为 []的问题(7)SDK修复 bxCreateExtObj 模板函数的错误写法修正文档中的多处笔误2、函数问题修复函数名修复内容eval修复指定返回变量时,同时还会生成 ans变量的问题betainc修复矩阵与向量或标量计算的错误fopen修复windows 无法打开中文文件的问题修复返回 mode 不正确的问题find修复输入标量 0 或空数组时,返回维度不对的问题kron修复整型与浮点型数据计算结果错误的问题char修复输入空数组时返回结果错误的问题修复字符串数组的转换问题fprint修复 fprint 无法生效的问题sprintf修复输入多参数结果错误的问题struct修复输入重复字段名不报错的问题修复扩容后数据丢失的问题datetime修复部分默认格式中文无法解析的问题cat修复输入日期时间类和表格类串联数组时闪退的问题sparse修复输入高维数组不报错的问题修复输入逻辑数组返回不正确的问题sort修复相同值索引返回乱序的问题rand, randi修复参数个数为 2 且输入均为负数时的闪退问题setfield修复输入空结构体未正常报错的问题issymmetrix,ishermitian修复输入非方阵结果错误的问题vecnorm修复 Lp 范数溢出的问题fseek修复指定文件位置超过文件结尾仍正常返回的问题ferror修复 ferror(fileID,'clear') 调用方式失败的问题contains修复空字符向量计算错误的问题gamma修复处理非正整数错误和溢出的问题unique修复指定'rows'模式时,函数认为NaN相等的问题strcmp修复对空字符数组的处理错误cell修复对空矩阵的处理错误绘图窗口修复Figure窗口频繁移动导致的闪退问题修复Figure窗口缩小至一定程度图形绘制不完整的问题bar,barh修复绘制条形图时坐标轴数据显示小数刻度值的问题newplot适配坐标区Nextplot属性的不同设置值contour修复输入空矩阵时的闪退问题legend修复输入含'data'字符的数据作为图例指定名称时的闪退问题bubblelegend修复设置Location为'none'但未指定Position属性时的闪退问题hsv修复从色条上取一个颜色时的闪退问题histogram修复临界值绘制错误的问题polarscatter适配坐标轴的科学计数法显示colorbar修复色条上问题显示不完全的问题waterfall修复同时输入行向量和列向量时的闪退问题validateattributes修复多个数据属性有numeric时会报错并置失败的问题修复函数名和变量名为string类型时不能正常执行的问题validatestring修复函数名和变量名为string类型时不能正常执行的问题minres修正对数据类型的判断sprand、sprandn修复前三个入参存在0时,不能正确返回结果的问题统计工具箱/corr修复指定 spearman 时输出结果不正确的问题优化工具箱/fsolve修复 options 默认输入时,计算为空的问题优化工具箱/fminbnd修复无法正确调用外部局部函数的问题优化工具箱/intlinprog修复b只能为列向量的问题优化工具箱/quadprog修复H为NaN矩阵时没有提示报错信息的问题3、集成开发环境(IDE)问题修复(1)解决关闭软件时未保存的文件提示导致软件未正常关闭的问题;(2)解决exit/quit提示保存文件会卡住命令行问题;(3)解决新建文件关闭后,切换目录闪退的问题;四、已知问题1、内核已知问题(1)当函数句柄绑定到插件函数时,若存在和插件函数同名的内置函数,那么卸载插件后该句柄会自动绑定到内置函数,不符合报错的期望,原则上函数句柄确定了绑定内容后就不应随运行环境而改变。2、函数已知问题(1)主体函数zip 指定文件夹名称最后有'/'表现错误sscanf 暂未支持转换转义字符(2)优化工具箱fmincon:由于未支持稀疏ldl分解,目前计算结果误差较大(3)统计与机器学习工具箱dbscan:在某些情况可能闪退(4)绘图绘图函数在绘制数据标签时可能出现显示精度不够的问题;在某些情况下(受给点顺序的影响),patch函数会绘制多余的区域;绘制的线条(特别是标记的边缘线条)可能会出现显示不均匀的问题;daspect设置之后鼠标移入和移出窗口,坐标轴范围会发生变化;在某些绘制情形下,使用fill函数会出现上面的补片无法遮挡下面补片线条的问题;在二维直角坐标系下,当设置坐标轴的zScale属性为"log"时,二维图像会消失;bubblelegend显示的气泡范围会精确到小数;最大化窗口后,在标题栏右侧拖动窗口,会发生闪烁;heatmap函数目前不支持通过subplot创建子图;由于对数坐标轴在平移时会重新计算tick,会导致移动时坐标轴标签跟着改变(主刻度间间隔等);colorbar设置位置为"north"且"tick"为右侧时,色条绘制会出错;设置绘图字体样式后,某些字符的绘制可能不完全3、集成开发环境(IDE)已知问题(1)编辑器中多行注释存在高亮显示不正常的问题;4、北太真元已知问题(1)北太天元窗口和北太真元窗口不能同时进入调试状态。如果在北太真元窗口调试状态下报错,需要通过“dbquit”指令在北太天元窗口手动退出调试状态。(2)北太真元仿真调试时,第一次打开数据标签,会显示“暂无数据”,需要步进或步退才能刷新数据。第一次步进时,数据标签也会显示“暂无数据”。(3)参数表达式中如果存在天元内置函数,参数检查后,天元工作区可能出现ans变量。(4)断言类的模块,仿真回调参数内的代码执行效果,与在天元命令行执行效果一致,可能会在天元命令行窗口出现打印信息;如果代码包含figure调用,在运行时必然出现figure窗口;如果存在clear和clc代码,会导致模型执行异常并报错。(5)在子函数内调用绘图函数,绘图内容会随着运行时间实时更新,如果在过程中关闭绘图窗口,可能会出现“figure不存在”的提示。(6)子函数模块输出复数信号,可能会导致模型计算异常或报错。
v4.0.0_release【安装包获取】 baltamatica_4.0.0_win_x86_64 baltamatica_4.0.0_ubuntu22.04_amd64【新增功能】 点击查看 北太天元baltamatica_4.0.0 更新日志
注:大赛版仅支持数模国赛期间(截至9月底)下载使用【安装包获取】 baltamatica_3.7.0_win_x86_64.exe baltamatica_3.7.0_ubuntu20.04_amd64.deb 【新增功能】1、新增机器学习工具箱,共计20个函数,覆盖分类、回归、聚类、降维等学习任务。以下为更新函数清单:函数名函数说明cluster从聚类树构建聚集簇clusterdata从数据构建聚集簇cophenet共现相关系数inconsistent非一致性系数linkage聚集层次聚类树pdist成对观测值之间的两两距离kmeansk 均值聚类kmedoidsk-中心点聚类dbscanDBSCAN(基于密度的含噪数据空间聚类)createns构建最近邻搜索对象knnsearch使用最近邻搜索对象或直接使用数据搜索k个最近邻pdist2两组观测值之间的两两距离dendrogram绘制层次聚类树状图optimalleaforder层次聚类的最优叶子排序manovacluster绘制多元方差分析后的树状图silhouette绘制聚类轮廓图pca原始数据的主成分分析pcacov对协方差矩阵的主成分分析pcares主成分分析的残差ppca概率主成分分析2、修复部分绘图和内置函数。
baltamatica_999_3.6.1_dev1【安装包获取】版本芯片操作系统安装形式baltamatica_999-3.6.1-dev1_aarch64.tar.xzarmLinux通用绿色版baltamatica_999-3.6.1-dev1_Linux_aarch64.debarmLinux通用安装包baltamatica_999-3.6.1-dev1_win_x86_64.exex86_64Windows安装包baltamatica_999-3.6.1-dev1_amd64.tar.xzx86_64Linux通用绿色版baltamatica_999-3.6.1-dev1_Linux_amd64.debx86_64Linux通用安装包baltamatica-999.3.6.1.dev1-1.el7.x86_64.rpmx86_64centos安装包baltamatica-999.3.6.1.dev1-1-x86_64.pkg.tar.zstx86_64archlinux安装包baltamatica_999-3.6.1-dev1_uos20_loongarch64.debloongarch64统信安装包【更新内容】本开发者预览版基于正式版 v3.6.1,除 v3.6.1 正式版与预览版 v3.6.1-dev0 的内容外,还包含以下的更新:一、新功能表格类型的变量增加使用圆点运算符修改列数据的支持。例如
T = table(randn(3)); T.(1) % 返回第 1 列 T.(1) = randn(3,1) % 设置第 1 列字符前端在启动信息中会显示当前北太天元版本号datetime duration calendarDuration 支持加减运算二、新增内置函数native2unicode unicode2native:本地编码和 Unicode 之间相互转化namedargs2cell:Name-Value 参数转化为元胞类型m2xdate x2mdate:北太天元 datetime 与 Excel 时间的转化三、内置函数优化input:支持input(prompt, 's')的用法,即将输入解释为字符;屏蔽求值的中间输出;prompt 支持换行符;在非交互模式下会报错“当前模式不支持”,而不是无限进行等待spalloc:优化实现any all num2cell:增加对高维和稀疏矩阵的支持fgets fgetl 函数:添加 `help` 文档repmat:优化实现,提高效率vecnorm:支持稀疏矩阵并提高效率四、BUG 修复修复在部分 Linux 系统中软件因 OpenGL 依赖错误而无法启动图形界面的问题修复fun (x)被错误判断为命令语法的问题(函数名和参数之间有空格)修复otherwise 中只有一条语句时,无输出参数函数调用(例如 disp(x);)的输出个数会被判断成 1 的问题修复sparse 函数对logical 类型输入处理错误的问题修复isfinite 函数对整数数组的处理修复 unique函数在rows 模式下没有正确处理NaN行的问题修复randi randperm 处理整数溢出的问题修复istriu istril 函数调用会闪退的问题五、已知问题在统信 UOS 等国产系统中,系统的安全策略可能会阻止程序运行,需要在系统安全设置中允许任意应用运行,详见 https://faq.uniontech.com/desktop/app/2eb3在使用非 debian 系列系统(如 redhat、fedora、centos、archlinux)运行软件时,软件部分功能可能会因为安装目录权限问题而无法正常使用,例如北太真元无法打开 .bt 文件。可将安装目录权限设置为使用者临时解决此问题。例如 chown -R user:user /opt/Baltamatica北太天元软件在分辨率过低的桌面(宽小于 1200,高小于 800)界面可能会显示不完整,该问题正解决中
baltamatica_999_3.6.1_dev0【安装包获取】版本芯片操作系统安装形式baltamatica_999-3.6.1-dev0_aarch64.tar.xzarmLinux通用绿色版baltamatica_999-3.6.1-dev0_Linux_aarch64.debarmLinux通用安装包baltamatica_999-3.6.1-dev0_win_x86_64.exex86_64Windows安装包baltamatica_999-3.6.1-dev0_amd64.tar.xzx86_64Linux通用绿色版baltamatica-999.3.6.1.dev0-1.x86_64.rpmx86_64Linux通用安装包baltamatica_999-3.6.1-dev0_Linux_amd64.debx86_64Linux通用安装包baltamatica-999.3.6.1.dev0-1-x86_64.pkg.tar.zstx86_64archlinux安装包baltamatica_999-3.6.1-dev0_uos20_loongarch64.debloongarch64统信安装包【更新内容】本开发者预览版基于正式版 v3.6.1,除 v3.6.1 正式版的内容外,还包含以下的更新:一、新功能表格类型的变量增加使用圆点运算符读取列数据的支持。例如
T = table(randn(3)); T.(1) % 返回第 1 列 T.Var1 % 返回名称为 Var1 的列曲线拟合插件添加用户文档1、新增内置函数yyyymmdd:转化为 YYYYMMDD 数值exceltime:转化为 Excel 日期数字posixtime:转化为 POSIX 时间juliandate:转化为儒略日期2、内置函数优化reshape`` 函数支持日期时间、持续时间、日历持续时间数组circshift`` 函数支持高维数组、支持日期时间、持续时间、日历持续时间数组二、BUG 修复修复花括号索引不加参数时软件会闪退的问题,如a{}修复内置函数sparse(i, j ,v)无法生成逻辑类型稀疏矩阵的问题修复内置函数between判断维度兼容的逻辑三、已知问题在统信 UOS 等国产系统中,系统的安全策略可能会阻止程序运行,需要在系统安全设置中允许任意应用运行,详见 https://faq.uniontech.com/desktop/app/2eb3在使用非 debian 系列系统(如 redhat、fedora、centos、archlinux)运行软件时,软件部分功能可能会因为安装目录权限问题而无法正常使用,例如北太真元无法打开 .bt 文件。可将安装目录权限设置为使用者临时解决此问题。例如 chown -R user:user /opt/Baltamatica北太天元软件在分辨率过低的桌面(宽小于 1200,高小于 800)界面可能会显示不完整,该问题正解决中在使用非 debian 系列系统(如 redhat、fedora、centos、archlinux)运行软件时,软件部分功能可能会因为安装目录权限问题而无法正常使用,例如北太真元无法打开 .bt 文件。可将安装目录权限设置为使用者临时解决此问题。例如 `chown -R user:user /opt/Baltamatica`北太天元软件在分辨率过低的桌面(宽小于 1200,高小于 800)界面可能会显示不完整,该问题正解决中
卢朓老师《数值方法:原理、算法及应用》课堂 学生大作业~供大家参考学习~相关代码和结果如下:%The accuracy of the SVM model is 81.11%修改之后的代码可以在北太天元上运行, 所有的代码如下:
load_plugin("optimization"); % 导入数据 data = readmatrix('heart disease.csv'); % 检查并处理缺失值 if any(any(ismissing(data))) data = rmmissing(data); end % 分离特征和标签 X = data(:,1:end-1); y = data(:,end); % 主成分分析降维 [coeff,score,latent] = pca(X); X_pca = score(:,1:2); % 划分训练集和测试集 cv = my_cvpartition(size(X_pca,1),'HoldOut',0.3); idx = cv.test; train_idx = setdiff(1: size(X_pca,1), idx); X_train = X_pca(train_idx,:); Y_train = y(train_idx,:); X_test = X_pca(idx,:); Y_test = y(idx,:); % 训练SVM模型 C = 1e2; % 设置较大的C值以确保硬间隔分类(对于线性可分数据) SVMModel = my_fitcecoc(X_train,Y_train,C); % 预测测试集 [label,score] = predict(SVMModel,X_test); % 计算准确率 accuracy = sum(label-1 == Y_test) / length(Y_test); % 可视化 gscatter(X_pca(:,1),X_pca(:,2),y); hold on; % 绘制决策边界c d = 0.15; [x1Grid,x2Grid] = meshgrid(min(X_pca(:,1)):d:max(X_pca(:,1)),... min(X_pca(:,2)):d:max(X_pca(:,2))); xGrid = [x1Grid(:),x2Grid(:)]; [~,scores] = predict(SVMModel,xGrid); contour(x1Grid,x2Grid,reshape(scores(:,2),size(x1Grid)),[0 0],'k'); % 输出准确率 fprintf('The accuracy of the SVM model is %.2f%%\n', accuracy * 100); hold off; function [coeff, score, latent] = pca(X) % X: 数据矩阵,每一列是一个特征,每一行是一个样本 % coeff: 主成分系数 % score: 表示主成分得分 % latent: 主成分对应的特征值 % 标准化数据(均值为0,方差为1) X = (X - mean(X)) ./ std(X); % 计算协方差矩阵 CovMat = cov(X); % 对协方差矩阵进行特征值分解 [V, D] = eig(CovMat); % 将特征值按降序排序,并获取对应的特征向量 [latent, order] = sort(diag(D), 'descend'); coeff = V(:, order); % 计算主成分得分 score = X * coeff; end function cv = my_cvpartition(n, method, param) % n: 总样本数 % method: 分区方法,目前仅支持 'HoldOut' % param: 分区方法的参数,对于 'HoldOut',该参数为留出的比例 % 初始化输出结构体 cv = struct('train', [], 'test', []); if strcmp(method, 'HoldOut') % 生成一个从 1 到 n 的整数数组 idx = 1:n; % 随机打乱 idx 数组 idx = idx(randperm(n)); % 计算留出样本的数量 numHoldOut = floor(n * param); % 分配训练和测试索引 cv.test = idx(1:numHoldOut); cv.train = idx(numHoldOut+1:end); else error('Unsupported partition method.'); end end function SVMModel = my_fitcecoc(X_train, Y_train, C) % X_train: 特征矩阵 (n x d),其中 n 是样本数,d 是特征维度 % Y_train: 标签向量 (n x 1) % C: 正则化参数,控制对错分样本的惩罚程度 % 获取类别数量 uniqueClasses = unique(Y_train); numClasses = length(uniqueClasses); % 初始化 SVM 模型结构体数组 SVMModel = struct('Classifiers', cell(numClasses*(numClasses-1)/2, 1), ... 'ClassPairs', []); % 训练一对一 SVM 分类器 classifierIndex = 1; for i = 1:numClasses for j = (i+1):numClasses % 提取当前类别对的训练数据 classI = Y_train == uniqueClasses(i); classJ = Y_train == uniqueClasses(j); X_train_ij = [X_train(classI, :); X_train(classJ, :)]; Y_train_ij = [ones(sum(classI), 1); -1*ones(sum(classJ), 1)]; % 训练 SVM 分类器 SVMModel.Classifiers{classifierIndex} = my_fitcsvm_soft(X_train_ij, Y_train_ij, C); % 记录当前分类器对应的类别对 SVMModel.ClassPairs(classifierIndex, :) = [uniqueClasses(i), uniqueClasses(j)]; classifierIndex = classifierIndex + 1; end end end function [wb] = my_fitcsvm(X, Y) % X: 特征矩阵 (n x d),其中 n 是样本数,d 是特征维度 % Y: 标签向量 (n x 1),取值为 +1 或 -1 load_plugin("optimization"); % 假设X和Y已经定义,如之前的示例 N = size(X, 1); % 数据点的数量 D = size(X,2); % 数据的维度 % 将w和b组合成一个向量,以便使用quadprog % 注意:这里我们将w放在前面,b放在最后 p = rand(D + 1, 1); % 初始猜测解(通常设为0) Aeq = []; % 没有等式约束 beq = []; % 构造二次规划的目标函数和线性不等式约束 H = eye(D+1); % Hessian矩阵(目标函数的二次项系数) f = zeros(D+1,1); % 目标函数的一次项系数(对于SVM原始问题,通常为负) % 线性不等式约束 Ax <= b % 对于每个数据点 (x_i, y_i),我们有 y_i * (w' * x_i + b) >= 1 A = [-Y.*X, -Y]; % 不等式约束的系数矩阵 b = -ones(N, 1); % 不等式约束的右侧向量 % 使用quadprog求解二次规划问题 options = optimoptions('quadprog','Algorithm','interior-point'); [w_b, fval, exitflag, output] = quadprog(H, f, A, b, Aeq, beq, [], [], p, options); % 分离出w和b w = w_b(1:D); b = w_b(D+1); wb = struct('w',w,'b',b); end function [wb] = my_fitcsvm_soft(X, Y, C) % X: 特征矩阵 (n x d),其中 n 是样本数,d 是特征维度 % Y: 标签向量 (n x 1),取值为 +1 或 -1 % C: 正则化参数,控制对错分样本的惩罚程度 % 假设X和Y已经定义,如之前的示例 N = size(X, 1); % 数据点的数量 D = size(X, 2); % 数据的维度 % 初始化松弛变量(slack variables) xi = zeros(N, 1); % 将w和b以及松弛变量组合成一个向量,以便使用quadprog p = zeros(D + 1 + N, 1); % 初始猜测解 % 构造二次规划的目标函数和线性不等式约束 H = [diag( [ones(1,D),0] ), zeros(D+1, N); zeros(N, D+1), zeros(N,N)]; % Hessian矩阵 f = [zeros(D+1, 1); C*ones(N, 1)]; % 目标函数的一次项系数 % 线性不等式约束 Ax <= b % 对于每个数据点 (x_i, y_i),我们有 y_i * (w' * x_i + b) >= 1 - xi_i A = [-Y.*X, -Y, diag( -ones(1,N) )]; % 不等式约束的系数矩阵 b = -ones(N, 1); % 不等式约束的右侧向量 Aeq = []; % 没有等式约束 beq = []; lb = [ -inf*ones(D+1,1); zeros(N,1)]; ub = inf*ones(D+1+N,1); % 使用quadprog求解二次规划问题 options = optimoptions('quadprog','Algorithm','interior-point'); [w_b_xi, fval, exitflag, output] = quadprog(H, f, A, b, Aeq, beq, lb, ub, p, options) % 分离出w, b和xi w = w_b_xi(1:D); b = w_b_xi(D+1); xi = w_b_xi(D+2:end); % 构造并返回结构体wb,包含w和b wb = struct('w', w, 'b', b); end function [label, score] = predict(SVMModel, X_test) % SVMModel: 训练好的多类SVM模型,由my_fitcecoc函数返回 % X_test: 测试集特征数据 % label: 预测的类别标签 % score: 预测的得分(可选,这里简化为投票得分) % 初始化预测标签和得分 [numTest, ~] = size(X_test); numClasses = length(SVMModel.Classifiers); label = zeros(numTest, 1); score = zeros(numTest, numClasses); % 对每个测试样本进行预测 for i = 1:numTest sample = X_test(i, :); votes = zeros(1, numClasses+1); % 使用每个SVM分类器进行预测,并进行投票 for j = 1:numClasses svmModel = SVMModel.Classifiers{j}; [~, ~, ~, output] = predictOneVsAll(svmModel, sample); if output == 1 classIdx1 = SVMModel.ClassPairs(j, 1)+1; votes(classIdx1) = votes(classIdx1) + 1; else classIdx2 = SVMModel.ClassPairs(j, 2)+1; votes(classIdx2) = votes(classIdx2) + 1; end end % 找到得票最多的类别作为预测标签 [~, maxVoteIdx] = max(votes); label(i) = maxVoteIdx; score(i, maxVoteIdx) = votes(maxVoteIdx); % 将最高票数作为得分 end end function [predictedLabel, predictedScore, decisionValues, output] = predictOneVsAll(svmModel, sample) % 使用单个SVM模型进行预测 % 这里简化为直接计算决策函数的值,实际应用中可能需要更复杂的处理 w = svmModel.w; b = svmModel.b; decisionValues = dot(w, sample) + b; if decisionValues >= 0 predictedLabel = 1; % 属于正类 else predictedLabel = -1; % 属于负类 end predictedScore = abs(decisionValues); % 决策函数的绝对值作为得分 output = predictedLabel; % 用于投票的输出 end---软间隔SVM通过引入松弛变量(slack variables)$\xi_i$来允许一些样本被错误分类,从而处理非线性可分的数据。这些松弛变量衡量了每个样本违反约束条件的程度。软间隔SVM的优化问题可以写成以下形式:
$$\min_{\mathbf{w}, b, \xi} \frac{1}{2} ||\mathbf{w}||^2 + C \sum_{i=1}^{m} \xi_i$$约束条件为:
$$y_i(\mathbf{w}^T \mathbf{x}_i + b) \geq 1 - \xi_i, \quad i = 1, \ldots, m$$ $$\xi_i \geq 0, \quad i = 1, \ldots, m$$其中,$\mathbf{w}$是权重向量,$b$是偏置项,$C$是一个正则化参数,用于控制对错分样本的惩罚程度。$\xi_i$是第$i$个样本的松弛变量。这个优化问题仍然是一个二次规划问题,但目标函数和约束条件都包含了松弛变量。当数据不是完全线性可分时,通过允许一些样本被错误分类(即$\xi_i > 0$),优化问题可以找到一个更好的分类超平面。现在,我们来解释如何克服可行域为空集的问题。在硬间隔SVM(即不允许任何错误分类的SVM)中,如果数据不是线性可分的,那么约束条件$y_i(\mathbf{w}^T \mathbf{x}_i + b) \geq 1$对于所有样本可能都无法同时满足,导致可行域为空集。然而,在软间隔SVM中,由于引入了松弛变量$\xi_i$,约束条件变为了$y_i(\mathbf{w}^T \mathbf{x}_i + b) \geq 1 - \xi_i$。这意味着即使某些样本不能满足原始的硬间隔约束(即$y_i(\mathbf{w}^T \mathbf{x}_i + b) \geq 1$),但只要它们满足新的软间隔约束(即$y_i(\mathbf{w}^T \mathbf{x}_i + b) \geq 1 - \xi_i$),并且松弛变量$\xi_i$足够小,那么这些样本就不会对优化问题的解产生太大的影响。因此,通过引入松弛变量和软间隔约束,软间隔SVM能够处理非线性可分的数据,并找到一个尽可能将数据正确分类的分类超平面。在实际应用中,可以使用二次规划求解器(如SMO算法)来求解这个优化问题。
v3.6.1_release【安装包获取】 baltamatica_3.6.1_release_win_x86_64 baltamatica_3.6.1_release_ubuntu20.04_amd64 【新增功能】 点击查看 北太天元baltamatica_3.6.1 更新日志
baltamatica 3.6.1_release一、修复问题(一)内核问题修复修复续行符相关的问题命令语法支持续行符的使用,例如 global a ... \n b现在会生成全局变量 ab续行符后的文本会当成注释,例如:
fprintf('%d %d', a, ... 这是注释 b)修复了交互式代码执行时,字符串或注释中的 ... 会被错误当成续行符的问题,例如:
% 以下代码在交互式与非交互式执行中都会报错“字符串异常终止”,不会再提示续行 a = 'please input a number ... % 以下代码在交互式模式中不会再出现续行提示 a = 1; % ...修复 > 等比较符号在命令语法和 {} [] 中不能正确识别的问题,例如
a = 1; a > 1 % 会返回 false [a > 1 2 3] % 会生成数组 [0 2 3] a >1 % 命令语法,调用一个名为 a 的函数,参数为 '>1'修复括号未匹配时内核报错的笔误修复日历持续时间数组对负数值时分秒转化错误的 BUG。例如 0h 25m -15.2s 会现在会被转化为 0h 24m 44.8s(二)函数问题修复已修复的函数具体情况如下:函数/功能描述ls修复 windows 系统下目录不存在会闪退的问题(三)北太真元问题修复修复Model Verification类模块出现输出端口时运行异常报错的问题修复checkStaticGap、checkStaticLowerBound、checkStaticRange、checkStaticUpperBound模块参数为向量时的运行报错问题更新下列行业计算单元图标:Crossover Pilot Model、Estimate Center of Gravity、Estimate Inertia Tensor、Moments about CG due to Forces、Precision Pilot Model、Three-axis Accelerometer、Three-axis Gyroscope、Three-axis Inertial Measurement Unit、Tustin Pilot Model