# 2026a V26.1 发行说明


发行时间:2026-02-06

更新与修复:

  • V26.1.1:此更新修复若干个缺陷,交互式编程环境优化若干项改进,科学计算函数库优化 21 个函数库及若干个函数,科学计算 APP 优化 3 个 APP。
  • V26.1.2:此更新修复 1 个 License 激活缺陷。

V26.1 版本交互式编程环境优化了 IDE、调试、Julia 打包部署、Julia 内核、绘图、APP Designer、代码生成、Copilot 插件、M 导入工具、帮助文档、安装包等多个模块;科学计算函数库优化了 21 个函数库及若干个函数;科学计算 APP 新增了信号分析器工具,优化了曲线拟合、滤波器可视化、滤波器设计 3 个 APP。

# 新增功能

# 交互式编程环境

  • IDE 界面改进

    • 新增内存监测工具,实时监控内存占用情况;
    • 语句块 end 关键词导航功能、缺失检查和快速修复;
      • Julia 脚本默认开启“粘滞滚动”功能,语句块的头部会停滞在编辑器顶部,方便识别和跳回语句块头部位置;
      • 文档高亮:语句块的任意一个关键词(如 if、else、end)在光标悬停时会高亮所有其他的关键词,方便定位语句块的完整范围;
      • 跳转定义:在 end 关键词上使用“Ctrl + 鼠标左键”或右键菜单单击“转到定义”可跳转至语句块的头部;
      • 根据用户当前代码缩进情况,精确检查和补充语句块缺失的“end”关键词。
    • 编码助手新增 720 个 TyBase(语言基础函数库)、588 个 TyMath(数学基础函数库)、338 个 TyStatistics(统计工具箱)、72 个 TyCurveFitting(曲线拟合工具箱)、291 个 TySignalProcessing(信号处理工具箱) 、176 个 TyDSPSystem(DSP 系统工具箱)、294 个 TyCommunication(通信工具箱)、176 个 TyControlSystems(控制系统工具箱)、85 个 TyRobustControl(鲁棒控制工具箱)、70 个 TySystemIdentification(系统辨识工具箱)、266 个 TyImageProcessing(图像处理工具箱)等签名帮助(Signature Help)功能,共计 3076 个函数的用法及参数帮助信息;
    • 新增无类型空向量的检查项(如 a = []),提示用户需要给空向量指定类型(如 a = Float64[]),防止用户无意中引入类型不稳定的容器;
    • 完善语句块折叠范围(folding range)功能,支持顶格编写 module 代码能够正确的折叠;
    • 代码编辑器支持快速查找已打开的文件;
    • 提供函数的文档注释(docstring)模板,能更便捷地编辑函数、位置参数、关键词参数、返回值、函数示例等描述,使用快捷键 Tab 键或 Shift + Tab 键跳转下一个或上一个模板位置;
    • 工作区及调试工作区支持搜索结构体及字典变量的字段;
    • 资源管理器的字体支持配置;
    • 资源管理器增加横向滚动条以查看文件全名;
    • 支持在 Windows 系统资源管理器中双击打开 syslabfig 文件;
    • 首选项新增“格式化时支持删除多余空行”配置;
    • 首选项新增“Julia 代码在编辑模式下启用数据提示”,支持编辑模式中,在 Julia 代码中鼠标悬停在变量上,显示该变量在工作区中的值;
    • 首选项新增代理设置功能;
    • 状态栏新增线程数提示,代码编辑时多线程相关代码如 @threads 新增线程数提示;
    • 表格视图支持复制导入 excel 表格的数据;
    • 变量视图表格支持跟随主题切换;
    • 完善起始页,增加“新建”、“示例”、“学习”快速引导 tab 页;
    • 差异编辑器增加支持忽略所有行内空格的配置项;
    • 性能分析报告页面火焰图增加朝向配置,支持导出成 .syslabProf 格式。
  • 调试功能改进

    • ★支持使用 @debug_func 调试指定函数;
    • ★新增调试节;
    • 修复了调试运行时,因在调试控制台执行代码引发终端报错而导致调试功能不可用的问题;
    • 修复加载函数库和调用宏连在一起时,调试报错的问题;
    • 右键文件增加运行和调试选项;
    • 调试控制台的历史记录支持显示包括评估在内的全部语句;
    • 调试断点的条件表达式输入提示优化;
    • 调试器设置中,增加一键勾选设置为编译模式、解释模式功能;
    • Julia 调试时,对于包含 *、&、\、⊻、∉ 操作符的表达式,鼠标悬停显示由表达式的值修改为当前变量的值。如 var=var1*var2,鼠标悬停至 var2 时,修改前显示 var1*var2 运算结果,修改后显示 var2 值;
    • 性能优化:对 Base 标准库函数直接调用(跳过 invokelatest)以提升性能,部分场景性能提升 30%;
    • 性能优化:若函数内部没有断点,则自动启用编译模式;
    • 调试控制台输入框支持自动换行。
  • ★Julia 打包部署

    新增 Syslab AppBundler,支持将 Julia 代码打包为独立应用程序或动态库。

  • Julia 内核改进

    • 修复了两种场景下因堆栈溢出导致的 Julia 终端报错或崩溃问题;
    • 修改了内存管理的启发式算法,缩小了 GC 的周期间隔,并减少了 Full GC 的频率,在大型工程可以降低 30% 的峰值内存;
    • 合并上游的增强补丁,修改了 GC 管理的数组对象池,优化释放数组时的时空局部性;
    • 修复多线程环境下中断后,多线程状态管理错误导致 @thread :static 无法再运行的错误。
  • APP Designer 功能改进

    • ★新增网格布局,自适应已有组件;
    • 坐标区组件新增降采样功能;
    • 表格组件支持下拉框编辑;
    • 表格新增行名;
    • 新增 uiputfile 函数。
  • 绘图功能改进

    • ★支持双游标功能;
    • 支持插入图形、文本框的复制粘贴;
    • 支持游标功能与数据提示功能同时使用;
    • 支持设置图例位于坐标轴之外;
    • 优化坐标轴指数显示效果;
    • 保存 EPS 格式图片的字体为 type1 格式;
    • 修复多线程绘图崩溃问题,改为警告并忽略多线程绘图代码;
    • surf 图形支持按照坐标区范围裁剪对象;
    • 优化了对数坐标轴部分场景次网格显示规则;
    • ★云化绘图弹窗列表新增筛选、缩略图功能。
  • Syslab 代码生成功能改进

    • ★支持拆分生成的 C++ 代码,Makefile 可通过并行构建优化 C++ 代码的构建时间,在测试工程中,C++ 代码的编译时间由 26 分钟下降至 3 分钟;
    • 支持 Makefile 兼容 powershell;
    • 优化了 all(A::BitMatrix;dims=2) 和 any(A::BitMatrix;dims=2) 在大矩阵上的性能。以 10 万 × 10 万 的 BitMatrix 矩阵为例,Julia 耗时:18.29s(首次运行), 17.785s (第 2 次运行); 代码生成耗时:2.352s(首次运行), 2.097s(第 2 次运行);
    • 优化了并行编译选项 (--njobs) 的文件拆分策略,确保生成的编译单元(C++ 文件)在编译复杂度上尽可能均衡。减少了各编译线程间的等待时间,尽可能使得整体编译耗时由原先受限于最慢的单个文件,转变为更均衡的并行执行
    • 新增 --use-cache 编译选项,引入缓存机制加速大型 Julia 文件代码生成,在内部测试环境上,代码生成时间平均约减少 23.68%;
    • 更新代码生成支持生成的 Syslab 科学计算函数列表用户帮助文档,初等数学新增 9 个(add,ellipticE,ellipticF,ellipticK,ellipticPi,fresnels,polyval,ratstr,sub),线性代数新增 2 个(orth,subspace),稀疏矩阵新增 5 个(colamd,full,spdiagm,symamd,unmesh),数值积分和微分方程新增 1 个(quadgk),信号处理新增 10 个(bitrevorder,cheby1,chirp,ellipap,finddelay,impinvar,poly2lsf,seqperiod,tf2zpk,vco)。
  • Copilot 插件改进

    • 提供基于语言的补全状态提示,支持 julia、matlab、python、markdown 多种语言补全状态管理;
      • 针对当前文件的语言进行补全状态提示,可选择启用/禁用当前语言的代码补全;
      • 提供四种补全状态:当前文件补全禁用状态、全局补全关闭状态、当前文件语言不支持、补全开启状态。
    • 编辑器右键菜单新增代码文档生成、代码单元测试生成两个快捷指令,可快速为选中代码进行文档生成/单元测试生成;
      • 代码文档生成快捷指令:可对选中的代码快速进行文档生成;
      • 单元测试生成快捷指令:可对选中的代码快速生成单元测试。
    • 允许用户主动添加上下文进行问答,支持的上下文类型:文件、文件夹、诊断信息、图片、终端上下文以及选中代码片段作为上下文;
      • 文件类型上下文:通过 @ 的方式,可以选择文件作为上下文;
      • 文件夹类型上下文:通过 @ 按钮的方式可以选择 文件夹 作为上下文;
      • 诊断信息上下文:通过 @ 按钮的方式可以添加文件的诊断信息作为上下文;
      • 图片上下文:提供两种方式添加图片上下文;
      • 终端上下文:终端选中内容,点击右上角的“添加至 AI 上下文”,即可将终端内容作为上下文进行添加;
      • 编辑器选中代码上下文:编辑器选中代码块,右键选择“添加至 AI 上下文”,即可将选中的代码块作为上下文添加。
    • 用户消息添加附件,可以了解每一轮对话使用的上下文;
    • 内置知识库搜索与文件读取工具,使 Copilot 更加智能。
  • M 导入工具改进

    • ★M 工作区变量支持绘图功能;
    • ★M 兼容支持 profile 功能;
    • ★新增稀疏矩阵相关函数或功能,包括
      • 创建:sparse, spconvert, sprand, sprandn, speye, spdiags, spalloc, sprandsym
      • 操作:issparse, nnz, nonzeros, nzmax, spy, full, spfun, spones
      • 重排序算法:amd, colamd
      • 迭代法和预条件子:pcg, lsqr, minres, symmlq, gmres, bicg, bicgstab, bicgstabl, cgs, qmr, tfqmr
      • 结构分析:etreeplot, treelayout, treeplot, gplot, unmesh
    • M 兼容搜索路径优先当前工作目录;
    • 关键词解析支持 Name = Value 语法;
    • 支持 Julia 和 M 工作区所有变量导入导出(不需要逐个输入变量名);
    • 优化了 kron 的性能,时间从 0.3 s 降低至 0.1 s;
    • 优化了 dlmread 读取大数据(800w*13)的性能,时间从 80~90 s 降低至 20~30 s;
    • 完成 M 兼容全部已发布函数(2033 个)入参检查;
    • 新增 52 个 M 函数,当前共提供 2033 个 M 函数及帮助文档。
  • 帮助文档改进

  • 安装包改进

    安装包启动时增加磁盘空间检测功能。

# 科学计算函数库

# 功能优化

# 性能优化

函数库 优化函数 优化前/s 优化后/s 优化后/优化前 备注
基础 ty_unique 9.31 5.12 0.55 /
基础 ty_unique 运行卡死 0.48 / nargout=2
基础 ty_unique 8.03 3.48 0.433 字符串数组
基础 strfind 5.292E-02 3.12E-03 0.059 /
基础 strfind 8.09 0.51 0.063 /
基础 fscanf 5.67 0.083 0.015 400W 数据量
基础 delete 2.91 1.68 0.577 1W 数据量
基础 array2table 8.01 5.59 0.698 4000W*4 数据量
图形 semilogx 4.675 1.817 0.389 /
数学 nufft 3.25 0.13 0.04 /
数学 nufft 3.33 0.14 0.042 /
数学 nufft 3.34 0.19 0.057 /
数学 filter1 62.88 37.11 0.59 /
数学 isbanded 1.39 0.004 0.003 /
数学 griddata 13.14 0.97 0.074 linear 算法
数学 griddata 37.74 8.37 0.222 cubic 算法
数学 griddata 5.66 1.22 0.216 boundary 算法
数学 interp1 0.402069 0.204279 0.508 pchip 算法,2000w 数据量
数学 interp1 21.27 2.93 0.138 spline 算法
数学 interp2 5.00 1.18 0.236 spline 算法
数学 interp2 0.021797 0.0077543 0.356 cubic 算法,100w 数据量
数学 interp2 0.0752287 0.0093791 0.125 linear 算法,400w 数据量
数学 interp3 2.4666 0.110469 0.045 cubic 算法,2000w 数据量
数学 interp3 0.278608 0.235736 0.846 nearest 算法,2000w 数据量
数学 padecoef 2.95182 1.55652 0.527 /
数学 pchip 1.62353 0.981722 0.605 1500w 数据量
数学 delaunay 3.3267 0.626315 0.188 30w 数据量
数学 conv2 176.96 8.87 0.05 /
优化 fmincon 1.39 1.26 0.906 /
优化 fminunc 7.52 4.25 0.565 /
优化 quadprog 1.28 0.86 0.672 active-set 算法
优化 quadprog 8.14 6.75 0.829 trust-region-reflective 算法
优化 lsqlin 2.69 1.89 0.703 active-set 算法
优化 lsqlin 25.01 6.97 0.279 trust-region-reflective 算法
优化 fminsearch 1.28 0.54 0.422 /
全局优化 paretosearch 8.07 0.02 0.002 /
全局优化 paretosearch 208.34 0.62 0.003 /
曲线拟合 excludedata 0.397108 0.0936431 0.236 box 方法
曲线拟合 excludedata 1.42 0.31 0.218 domain 方法
曲线拟合 excludedata 1.81 0.31 0.171 range 方法
曲线拟合 prepareCurveData 3.17 0.54 0.17 /
曲线拟合 category 1.24 0.004 0.003 /
曲线拟合 prepareSurfaceData 3.33 0.82 0.246 /
曲线拟合 numargs 3.18 0.02 0.006 /
曲线拟合 islinear 1.94 0.008 0.004 /
曲线拟合 typecur 2.66 0.04 0.015 /
曲线拟合 fittype 13.26 1.07 0.081 /
曲线拟合 dependnames 0.04 0.03 0.75 /
曲线拟合 indepnames 0.04 0.01 0.25 /
曲线拟合 probnames 1.57 0.50 0.318 /
曲线拟合 coeffnames 0.16 0.08 0.5 /
曲线拟合 typecur 0.006 0.003 0.5 /
曲线拟合 formula 5.20 2.51 0.483 /
曲线拟合 fit 48.67 0.47 0.01 /
曲线拟合 numcoeffs 9.69 2.79 0.288 /
曲线拟合 integrate 1.67 0.01 0.006 /
统计 gamfit 2.20 0.70 0.318 /
统计 gamlike 1.81 0.91 0.503 /
统计 fitdist 20.89 0.64 0.031 Rician 分布拟合
统计 fitdist 28.46 0.37 0.013 Gamma 分布拟合
统计 fitdist 1.47 0.40 0.272 Nakagami 分布拟合
统计 fitdist 13.53 1.27 0.094 kernel 分布拟合
统计 fitdist 1.24 0.61 0.492 ExtremeValue 分布拟合
统计 fitdist 2.79 1.85 0.663 Weibull 分布拟合
统计 fitdist 6.73 1.53 0.227 GeneralizedExtremeValue 分布拟合
统计 fitdist 2.52 1.25 0.496 HalfNormal 分布拟合
统计 fitdist 5.99 1.27 0.212 Rayleigh 分布拟合
统计 fitdist 1.58 1.38 0.873 LogNormal 分布拟合
统计 fitdist 4.14 0.64 0.155 Loglogistic 分布拟合
统计 mle 10.55 1.10 0.104 Rician 分布进行
统计 mle 1.16 0.53 0.457 Gamma 分布进行
统计 mle 3.72 1.66 0.446 Nakagami 分布进行
统计 mle 2.11 0.92 0.436 LogNormal 分布进行
统计 mle 6.06 0.97 0.16 Loglogistic 分布进行
统计 cdf 2.74 0.13 0.047 /
统计 pdf 3.04 0.93 0.306 /
统计 paretotails 0.93 0.73 0.785 /
统计 boundary 1.91 0.0007 3.66E-04 /
统计 nsegments 5.16 0.80 0.155 /
统计 random 1.64 0.0008 4.87E-04 /
统计 gpfit 3.28 0.47 0.143 /
统计 ncx2pdf 2.77 0.28 0.101 /
统计 unifit 17.35 1.74 0.1 /
统计 chi2gof 12.75 1.32 0.104 /
统计 movmad 7.73005 0.98692 0.128 10000*10000 数据量
信号 thd 2.34E-03 2.21E-03 0.944 /
信号 snr 5.56E-05 2.55E-05 0.459 /
信号 sfdr 4.213E-06 1.270E-06 0.301 /
信号 firls 3.56E-02 5.35E-03 0.150 /
信号 medfilt1 3.223 2.87E-02 0.009 1e6 量级数据,1000 窗长
通信 block_decode 1.990E-05 1.140E-05 0.573 /
通信 syndtable 4.786E-06 1.780E-06 0.372 /
通信 muxintrlv 1.023E-05 3.0536E-07 0.03 /
通信 muxdeintrlv 8.30E-06 3.61E-07 0.043 /
通信 convintrlv 3.487 5.222E-04 1.50E-04 /
通信 convdeintrlv 3.487 5.611E-04 1.61E-04 /
通信 helintrlv 2.960 1.109E-03 3.75E-04 /
通信 heldeintrlv 2.881 1.165E-03 4.04E-04 /
通信 comm_MultiplexedInterleaver 3.117 4.797E-04 1.54E-04 /
通信 comm_MultiplexedDeinterleaver 3.309 5.379E-04 1.63E-04 /
通信 comm_ConvolutionalInterleaver 3.541 4.467E-04 1.26E-04 /
通信 comm_ConvolutionalDeinterleaver 2.952 4.301E-04 1.46E-04 /
通信 comm_HelicalInterleaver 1.930 1.123E-03 5.82E-04 /
通信 comm_HelicalDeinterleaver 2.273 1.425E-03 6.27E-04 /
通信 comm_PhaseNoise 3.27E-02 5.10E-04 0.016 针对标量的频偏和相噪输入情况
图像 padarray 1.853E-02 3.8E-04 0.021 /
图像 imregionalmax 0.3056 1.880E-03 0.006 /
图像 imrotate 1.938E-03 3.6E-04 0.186 /
  • 基础工具箱

    • ty_unique 提升了输入大数组时的性能,并解决了部分场景下因内存不足导致的报错问题;

      using TyBase
      using BenchmarkTools
      using Random
      Random.seed!(123)
      @btime ty_unique(rand(1:1.0:50_000_000, 100_000_000))
      

      大致的执行时间是:
      R2025b SP2:9.31 秒
      R2025b SP3:5.12 秒
      对于 nargout = 2 的情况,ty_unique 解决了原算法超出内存报错的问题。示例如下:

      using TyBase
      using BenchmarkTools
      using Random
      Random.seed!(123)
      @btime ty_unique(rand(1:1.0:50_000_000, 10_000_000), nargout = 2)
      

      大致的执行时间是:
      R2025b SP2:运行卡死
      R2025b SP3:0.48 秒
      对于字符串数组,ty_unique 的性能有较大提升。 示例如下:

      using TyBase
      using BenchmarkTools
      R = 10_000_000
      A = repeat(["dog", "cat", "fish", "horse", "dog ", "fish "], R)
      @btime ty_unique(A)
      

      大致的执行时间是:
      R2025b SP2:8.03 秒
      R2025b SP3:3.48 秒

      此代码是运行在 Windows 11 的 16 核 Intel(R) Core(TM) Ultra 9 185H @ 2.30 GHz 的客户端版本 Syslab,使用 Julia 的 @btime 宏进行计时。

    • strfind:针对 strfind 进行了性能优化

      using TyBase
      using BenchmarkTools
      using Random
      Random.seed!(123)
      
      N = 100_000
      logs = [rand() < 0.001 ? "ERROR: Something failed" : "INFO: Running normally" for _ in 1:N]
      
      @btime strfind(logs, "ERROR");
      

      大致的执行时间是:
      R2025b SP3:52.92 毫秒
      R2025b SP4:3.12 毫秒

      using TyBase
      a = ["11111","11112","11121","11122","11211","11212","11221","11222",
          "12111","12112","12121","12122","12211","12212","12221","12222",
          "21111","21112","21121","21122","21211","21212","21221","21222",
          "22111","22112","22121","22122","22211","22212","22221","22222"];
      
      b = 262144 * ones(Int, 39);
      b[end] = 38528;
      s = [repeat("1", b[i]) for i in 1:39];
      
      @btime for i in 1:32
          for ii in 1:39
              stridx = strfind(s[ii], a[i])
          end
      end
      

      大致的执行时间是:
      R2025b SP3:8.09 秒
      R2025b SP4:0.51 秒

      此代码是运行在 Windows 11 的 16 核 Intel(R) Core(TM) Ultra 9 185H @ 2.30 GHz 的客户端版本 Syslab,使用 Julia 的 @btime 宏进行计时。

    • fscanf:针对 fscanf 进行了性能优化。

      using TyBase
      using BenchmarkTools
      A = repeat(
          [
              8.8 7.7
              8800 7700
          ],
          1000000,
      )
      filename = "num.txt"
      save(filename, "-ascii"; A)
      clear([:A])
      fid = fopen("num.txt")
      @btime begin
          seek(fid, 0)
          fscanf(fid, "%f")
      end
      fclose(fid)
      

      大致的执行时间是:
      R2025b SP5:5.67 秒
      R2026a:0.083 秒

    • delete:针对 delete 进行了性能优化。

      filedir = "File_test"
      if !isdir(filedir)
          mkdir(filedir)
      end
      
      # 创建 10000 个空文件
      for i in 1:10_000
          filename = joinpath(filedir, "file_$(i).txt")
          open(filename, "w") do f
              # 不写内容,生成空文件
          end
      end
      
      using TyBase
      n = 10_000
      filedir = "File_test"
      
      files = [joinpath(filedir, "file_$(i).txt") for i in 1:n]
      @time delete(files)
      

      大致的执行时间是:
      R2025b SP5:2.91 秒
      R2026a:1.68 秒

    • array2table:针对 array2table 进行了性能优化。

      using TyBase
      using BenchmarkTools
      C = [
          5 "cereal" 110 "C+"
          12 "pizza" 140 "B"
          23 "salmon" 367 "A"
          2 "cookies" 160 "D"
      ]
      CC = repeat(C, 10000000)
      
      @btime array2table(CC)
      

      大致的执行时间是:
      R2025b SP5:8.01 秒
      R2026a:5.59 秒

      此代码是运行在 Windows 11 的 16 核 Intel(R) Core(TM) Ultra 9 185H @ 2.30 GHz 的客户端版本 Syslab,使用 Julia 的 @btime、@time 宏进行计时。

  • 图形工具箱

    semilogx:针对 semilogx 进行了性能优化。

    using TyPlot
    x = 1:10000000;
    y = log.(x);
    semilogx(x, y)
    

    大致的执行时间是:
    R2025b SP4:4.675 秒
    R2025b SP5:1.817 秒

    此代码是运行在 Windows 10 的 14 核 Intel(R) Core(TM) i7-12800H 的客户端版本 Syslab,使用 Julia @time 宏进行进行计时。

  • 数学工具箱

    • nufft:非均匀快速傅里叶变换;
      • 使用采样点 t 返回 X 的非均匀离散傅里叶变换(NUDFT)时计算性能得到了提升,示例如下:

        using TyMath
        using TyBase
        rng = MT19937ar(5489)
        x = rand(rng, 2000, 2000)
        t = [1:500; 1001:2500]
        
        y = nufft(x, t)
        

        大致的执行时间是:
        R2025b SP2:3.25 秒
        R2025b SP3:0.13 秒

      • 对于使用采样点 t 计算查询点 f 的 NUDFT,示例如下:

        using TyMath
        using TyBase
        rng = MT19937ar(5489)
        x = rand(rng, 2000, 2000)
        t = [1:500; 1001:2500]
        f = [2001:3000; 4001:5000]
        
        y = nufft(x, t, f)
        

        大致的执行时间是:
        R2025b SP2:3.33 秒
        R2025b SP3:0.14 秒

      • 对于返回沿维度 dim 的 NUDFT,示例如下:

        using TyMath
        using TyBase
        rng = MT19937ar(5489)
        x = rand(rng, 2000, 2000)
        t = [1:500; 1001:2500]
        f = [2001:3000; 4001:5000]
        
        y = nufft(x, t, f, 2)
        

        大致的执行时间是:
        R2025b SP2:3.34 秒
        R2025b SP3:0.19 秒

        此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • filter1:对二维或三维散点数据插值;

      使用由分子和分母系数 b 和 a 定义的有理传递函数对输入数据 x 进行滤波计算性能得到了提升,示例如下:

      using TyMath
      using TyBase
      rng = MT19937ar(5489)
      b = randn(rng, 3042);
      x = randn(rng, 201326592);
      
      xx, = filter1(b, 1, x);
      

      大致的执行时间是:
      R2025b SP2:62.88 秒
      R2025b SP3:37.11 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • isbanded:确定矩阵是否在特定带宽范围内;

      使用 box 方法从拟合中排除数据时性能得到了提升,示例如下:

      using TyMath
      using TyBase
      rng = MT19937ar(5489)
      a = rand(rng, 10000, 10000);
      a = tril(a, 500);
      
      for i in 1:300000
          isbanded(a, 9999, 300)
      end
      

      大致的执行时间是:
      R2025b SP3:1.39 秒
      R2025b SP4:0.004 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • griddata:对二维或三维散点数据插值;

      • 使用 gridata 的 linear 内插时性能得到了提升,示例如下:

        using TyMath
        using TyBase
        rng = MT19937ar(5489)
        x = -3 .+ 6 * rand(rng, 5000);
        y = -3 .+ 6 * rand(rng, 5000);
        v = sin.(x) .^ 4 .* cos.(y);
        xq, yq = meshgrid2(-3:0.01:3, -3:0.01:3);
        near = "linear"
        
        z1 = griddata(x, y, v, xq, yq, near);
        

        大致的执行时间是:
        R2025b SP3:13.14 秒
        R2025b SP4:0.97 秒

      • 使用 gridata 的 cubic 内插时性能得到了提升,示例如下:

        using TyMath
        using TyBase
        rng = MT19937ar(5489)
        x = -3 .+ 6 * rand(rng, 10000);
        y = -3 .+ 6 * rand(rng, 10000);
        v = sin.(x) .^ 4 .* cos.(y);
        xq, yq = meshgrid2(-3:0.005:3, -3:0.005:3);
        near = "cubic"
        
        z1 = griddata(x, y, v, xq, yq, near);
        

        大致的执行时间是:
        R2025b SP3:37.74 秒
        R2025b SP4:8.37 秒

      • 使用 gridata 的 boundary 外插时性能得到了提升,示例如下:

        using TyMath
        using TyBase
        rng = MT19937ar(5489)
        xy = -2.5 .+ 5 * rand(rng, 5000, 2);
        x = xy[:, 1];
        y = xy[:, 2];
        v = x .* exp.(-x .^ 2 - y .^ 2);
        xq, yq = meshgrid2(-3:0.01:3, -3:0.01:3);
        
        vq = griddata(x, y, v, xq, yq, "linear", "boundary");
        

        大致的执行时间是:
        R2025b SP3:5.66 秒
        R2025b SP4:1.22 秒

        此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • interp1:一维数据插值(表查找);

      使用 interp1 的 spline 方法计算时性能得到了提升,示例如下:

      using TyMath
      using TyBase
      rng = MT19937ar(5489)
      xdata = 1:100000000
      ydata = rand(100000000) .+ xdata
      zdata = rand(100000000) .+ xdata
      
      F = interp1(xdata, ydata, zdata, "spline", "spline")
      

      大致的执行时间是:
      R2025b SP3:21.27 秒
      R2025b SP4:2.93 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • interp2:meshgrid 格式的二维网格数据插值;

      使用 interp2 的 spline 方法计算时性能得到了提升,示例如下:

      using TyMath
      using TyBase
      rng = MT19937ar(5489)
      x, y = meshgrid2(0.02:0.02:100, 0.02:0.02:100);
      z = cos.(x) .+ sin.(y);
      a, b = meshgrid2(0.02:0.02:100, 0.02:0.02:100);
      a = a .+ rand(rng, 5000, 5000)
      b = b .+ rand(rng, 5000, 5000)
      
      c = interp2(x, y, z, a, b, "spline")
      

      大致的执行时间是:
      R2025b SP3:5.00 秒
      R2025b SP4:1.18 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • conv2:二维卷积;

      使用 conv2 计算时性能得到了提升,示例如下:

      using TyMath
      rng = MT19937ar(5489)
      u = rand(rng, 680000,1);
      v = rand(rng, 680000,1);
      
      y = conv2(u, v);
      

      大致的执行时间是:
      R2025b SP3:176.96 秒
      R2025b SP4:8.87 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • interp1:一维数据插值(表查找);

      使用 pchip 方法进行计算时性能得到了提升,示例如下:

      using TyMath
      using TyBase
      rng = MT19937ar(5489)
      sig_len = 20971520
      sig_ana = rand(rng,1, 20971520)
      cc = rand(rng,20971520, 1)
      x = 1:sig_len
      y = vec(sig_ana)
      xq = vec(cc)
      
      sin_sig = interp1(x,y,xq, "pchip");
      

      大致的执行时间是:
      R2025b SP5:0.402069 秒
      R2026a:0.204279 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T@2.5GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

    • interp3:meshgrid 格式的三维网格数据插值;

      • 使用 cubic 方法时性能得到了提升,示例如下:

        using TyMath
        using TyBase
        X, Y, Z, V = TyPlot.flow(10; nargout=4)
        Xq, Yq, Zq = meshgrid3(0.1:0.025:10, -3:0.025:3, -3:0.025:3)
        # mtest-setup end
        
        Vq = interp3(X, Y, Z, V, Xq, Yq, Zq, "cubic")
        

        大致的执行时间是:
        R2025b SP5:2.46666 秒
        R2026a:0.110469 秒

      • 使用 spline 方法时性能得到了提升,示例如下:

        using TyMath
        using TyBase
        using TyPlot
        X, Y, Z, V = TyPlot.flow(10; nargout=4)
        Xq, Yq, Zq = meshgrid3(0.1:0.025:10, -3:0.025:3, -3:0.025:3)
        
        Vq = interp3(X, Y, Z, V, Xq, Yq, Zq, "spline")
        

        大致的执行时间是:
        R2025b SP5:2.62934 秒
        R2026a:0.205704 秒

      • 使用 nearest 方法时性能得到了提升,示例如下:

        using TyMath
        using TyBase
        using TyPlot
        X, Y, Z, V = TyPlot.flow(10; nargout=4)
        Xq, Yq, Zq = meshgrid3(0.1:0.025:10, -3:0.025:3, -3:0.025:3)
        
        Vq = interp3(X, Y, Z, V, Xq, Yq, Zq, "nearest")
        

        大致的执行时间是:
        R2025b SP5:0.278608 秒
        R2026a:0.235736 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T@2.5GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

    • padecoef:时滞的 Padé 逼近;

      使用 padecoef 计算时性能得到了提升,示例如下:

      using TyMath
      m = 20000000;
      
      for i in 1:10
          a, b = padecoef(m, m)
      end
      

      大致的执行时间是:
      R2025b SP5:2.95182 秒
      R2026a:1.55652 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T@2.5GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

    • pchip:分段三次 Hermite 插值多项式(PCHIP);

      使用 pchip 时性能得到了提升,示例如下:

      using TyMath
      using TyBase
      x = 0:0.000001:15;
      y = besselj.(1, x);
      xq2 = 0:0.01:15;
      
      s = pchip(x, y, xq2);
      

      大致的执行时间是:
      R2025b SP5:1.62353 秒
      R2026a:0.981722 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T@2.5GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

    • delaunay:Delaunay 三角剖分;

      使用 delaunay 计算时性能得到了提升,示例如下:

      using TyMath
      rng = MT19937ar(5489);
      x = randn(rng, 300000);
      y = randn(rng, 300000);
      
      DT = delaunay(x, y);
      

      大致的执行时间是:
      R2025b SP5:3.3267 秒
      R2026a:0.626315 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T@2.5GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

    • interp2:meshgrid 格式的二维网格数据插值;

      • 使用 cubic 方法时性能得到了提升,示例如下:

        using TyMath
        using TyBase
        rng = MT19937ar(5489)
        x, y = meshgrid2(0.1:0.1:100, 0.1:0.1:100);
        z = cos.(x) .+ sin.(y);
        a, b = meshgrid2(0.1:0.1:100, 0.1:0.1:100);
        a = a .+ rand(rng, 1000, 1000)
        b = b .+ rand(rng, 1000, 1000)
        
        c = interp2(x, y, z, a, b, "cubic")
        

        大致的执行时间是:
        R2025b SP5:0.021797 秒
        R2026a:0.0077543 秒

      • 使用 linear 方法时性能得到了提升,示例如下:

        using TyMath
        using TyBase
        rng = MT19937ar(5489)
        x, y = meshgrid2(0.05:0.05:100, 0.05:0.05:100);
        z = cos.(x) .+ sin.(y);
        a, b = meshgrid2(0.05:0.05:100, 0.05:0.05:100);
        a = a .+ rand(rng, 2000, 2000)
        b = b .+ rand(rng, 2000, 2000)
        
        c = interp2(x, y, z, a, b, "linear")
        

        大致的执行时间是:
        R2025b SP5:0.0752287 秒
        R2026a:0.0093791 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T@2.5GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

  • 优化工具箱

    • fmincon:寻找约束非线性多变量函数的最小值;

      使用 fmincon 求解线性与边界约束时计算性能得到了提升,示例如下:

      using TyMath
      using TyOptimization
      PrG1f = x -> begin
          x1 = @views x[1:4]
          x2 = @views x[5:13]
          y = 5 * sum(x1) - 5 * dot(x1, x1) - sum(x2)
          return y
      end
      A = [
          2 2 0 0 0 0 0 0 0 0 1 0 0
          2 0 2 0 0 0 0 0 0 1 0 1 0
          0 2 2 0 0 0 0 0 0 0 1 1 0
          -8 0 0 0 0 0 0 0 0 1 0 0 0
          0 -8 0 0 0 0 0 0 0 0 1 0 0
          0 0 -8 0 0 0 0 0 0 0 0 1 0
          0 0 0 -2 -1 0 0 0 0 1 0 0 0
          0 0 0 0 0 -2 -1 0 0 0 1 0 0
          0 0 0 0 0 0 0 -2 -1 0 0 1 0
      ]
      b = [10, 10, 10, 0, 0, 0, 0, 0, 0]
      lb = zeros(13)
      ub = ones(13)
      ub[10:12] .= 100.0
      rng = MT19937ar(5489)
      x0 = rand(rng, 13)
      opts = optimoptions(:fmincon; Algorithm="active-set", Display="off")
      
      for i in 1:2000
          x, fval = fmincon(PrG1f, x0, A, b, [], [], lb, ub, nothing, opts)
      end
      

      大致的执行时间是:
      R2025b SP2:1.39 秒
      R2025b SP3:1.26 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • fminunc:求无约束多变量函数的最小值;

      使用 fminunc 默认算法求解大规模无约束问题的计算性能得到了提升,示例如下:

      using TyMath
      using TyOptimization
      N = 2000
      x0 = fill(-2.0, N)
      x0[2:2:N] .= 2.0
      function multirosenbrockval(x)
          F = 0.0
          @inbounds for i in eachindex(x)
              if iseven(i)
                  F += abs2(10.0 * (x[i] - x[i - 1]^2))
              else
                  F += abs2(1.0 - x[i])
              end
          end
          return F
      end
      options = optimoptions(:fminunc; Display="off", Algorithm="quasi-newton")
      
      X, FVAL, EXITFLAG, OUTPUT, GRAD, HESSIAN = fminunc(multirosenbrockval, x0, options)
      

      大致的执行时间是:
      R2025b SP2:7.52 秒
      R2025b SP3:4.25 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • quadprog:二次规划;

      • 使用 active-set 算法求解二次规划问题时计算性能得到了提升,示例如下:

        using TyOptimization
        opts = optimoptions(:quadprog; Algorithm="active-set", Display="off")
        H = [1.0 -1.0; -1.0 2.0]
        f = [-2.0, -6.0]
        A = [1.0 1.0; -1.0 2.0; 2.0 1.0]
        b = [2.0, 2.0, 3.0]
        
        for i in 1:100000
            x, fval, exitflag, output, lambda = quadprog(H, f, A, b, [], [], [], [], [], opts)
        end
        

        大致的执行时间是:
        R2025b SP3:1.28 秒
        R2025b SP4:0.86 秒

      • 使用 trust-region-reflective 算法求解二次规划问题时计算性能得到了提升,示例如下:

        using TyOptimization
        opts = optimoptions(:quadprog; Algorithm="trust-region-reflective", Display="off")
        H = [
            1 -1 1
            -1 2 -2
            1 -2 4
        ]
        f = [2; -3; 1]
        Aeq = ones(1, 3)
        beq = [1 / 2]
        
        for i in 1:100000
            x, fval, exitflag, output, lambda = quadprog(H, f, [], [], Aeq, beq, [], [], [], opts)
        end
        

        大致的执行时间是:
        R2025b SP3:8.14 秒
        R2025b SP4:6.75 秒

        此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • lsqlin:求解约束线性最小二乘问题;

      • 使用 active-set(默认)算法求解约束线性最小二乘问题时计算性能得到了提升,示例如下:

        using TyOptimization
        opt = optimoptions(:lsqlin; Algorithm="active-set", Display="off")
        C = [
            0.9501 0.7620 0.6153 0.4057
            0.2311 0.4564 0.7919 0.9354
            0.6068 0.0185 0.9218 0.916
            0.4859 0.8214 0.7382 0.4102
            0.8912 0.4447 0.1762 0.8936
        ]
        d = [
            0.0578
            0.3528
            0.8131
            0.0098
            0.1388
        ]
        A = [
            0.2027 0.2721 0.7467 0.4659
            0.1987 0.1988 0.4450 0.4186
            0.6037 0.0152 0.9318 0.8462
        ]
        b = [
            0.5251
            0.2026
            0.6721
        ]
        
        for i in 1:200000
            x, fval = lsqlin(C, d, A, b, [], [], [], [], [], opt)
        end
        

        大致的执行时间是:
        R2025b SP3:2.69 秒
        R2025b SP4:1.89 秒

      • 使用 trust-region-reflective 算法求解约束线性最小二乘问题时计算性能得到了提升,示例如下:

        using TyOptimization
        rng = MT19937ar(5489)
        n = 100
        x0 = 5 .* rand(rng, n)
        options = optimoptions(:lsqlin; Algorithm="trust-region-reflective", Display="off")
        r = 1:(n - 1)
        v = Vector{Float64}(undef, n)
        v[n] = (-1)^(n + 1) / n
        v[r] = (-1) .^ (r .+ 1) ./ r
        C = TestArrays.circul(v)
        C = vcat(C, C)
        r = 1:(2 * n)
        d = zeros(r)
        d[r] = n .- r
        lb = fill(-5, n)
        ub = fill(5, n)
        
        for i in 1:1000
            x, fval = lsqlin(C, d, [], [], [], [], lb, ub, x0, options)
        end
        

        大致的执行时间是:
        R2025b SP3:25.01 秒
        R2025b SP4:6.97 秒

        此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • fminsearch:使用无导数法计算无约束的多变量函数的最小值。

      使用 fminsearch 时计算性能得到了提升,示例如下:

      using TyOptimization
      fun = x -> begin
          f = 0
          for k in -10:10
              f = f + exp(-(x[1] - x[2])^2 - 2 * x[1]^2) * cos(x[2]) * sin(2 * x[2])
          end
          return f
      end
      x0 = [0.25, -0.25]
      opts = optimset(; Display="off", StepTolerance=1e-12)
      
      for i in 1:10000
          x, = fminsearch(fun, x0, opts)
      end
      

      大致的执行时间是:
      R2025b SP3:1.28 秒
      R2025b SP4:0.54 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

  • 全局优化工具箱

    paretosearch:寻找帕累托解集。

    • 使用 paretosearch 计算带边界约束的多目标优化时计算性能得到了提升,示例如下:

      using TyMath
      using TyGlobalOptimization
      f1(x) = norm(x - [1, 2])^2
      f2(x) = norm(x + [2, 1])^2
      f(x) = [f1(x), f2(x)]
      lb = [-10, -10]
      ub = [10, 10]
      nvars = 2
      
      ParetoSolution, ParetoFront = paretosearch(f, nvars, lb, ub)
      

      大致的执行时间是:
      R2025b SP2:8.07 秒
      R2025b SP3:0.02 秒

    • 使用非默认选项 paretosearch 优化时计算性能得到了提升,示例如下:

      using TyMath
      using TyGlobalOptimization
      f(x) = [norm(x - [i + 1, i, 1 - i])^2 for i in 1:10]
      lb = [-10, -10, -10]
      ub = [10, 10, 10]
      nvars = 3
      options = paretosearch_options(; step_tolerance=1e-5)
      
      for i in 1:10
          ParetoSolution, ParetoFront = paretosearch(f, nvars, lb, ub, options)
      end
      

      大致的执行时间是:
      R2025b SP2:208.34 秒
      R2025b SP3:0.62 秒

    此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

  • 曲线拟合工具箱

    • excludedata:从拟合中排除数据;

      • 使用 box 方法从拟合中排除数据时性能得到了提升,示例如下:

        using TyMath
        using TyCurveFitting
        rng = MT19937ar(5489)
        x = 6 * rand(rng, 1000000) .- 3
        y = 6 * rand(rng, 1000000) .- 3
        method = "box"
        v = [-1 1 -1 1]
        
        for i in 1:200
            f = excludedata(x, y, method, v)
        end
        

        大致的执行时间是:
        R2025b SP3:1.95 秒
        R2025b SP4:0.29 秒

      • 使用 domain 方法从拟合中排除数据时性能得到了提升,示例如下:

        using TyMath
        using TyCurveFitting
        rng = MT19937ar(5489)
        x = 6 * rand(rng, 1000000) .- 3
        y = 6 * rand(rng, 1000000) .- 3
        method = "domain"
        v = [-2 2]
        
        for i in 1:400
            f = excludedata(x, y, method, v)
        end
        

        大致的执行时间是:
        R2025b SP3:1.42 秒
        R2025b SP4:0.31 秒

      • 使用 range 方法从拟合中排除数据时性能得到了提升,示例如下:

        using TyMath
        using TyCurveFitting
        rng = MT19937ar(5489)
        x = 6 * rand(rng, 1000000) .- 3
        y = 6 * rand(rng, 1000000) .- 3
        method = "range"
        v = [-1, 1]
        
        for i in 1:400
            f = excludedata(x, y, method, v)
        end
        

        大致的执行时间是:
        R2025b SP3:1.81 秒
        R2025b SP4:0.31 秒

        此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • prepareCurveData:为曲线拟合准备数据输入;

      使用 prepareCurveData 时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      rng = MT19937ar(5489)
      x = rand(rng, 2000, 2000) + rand(rng, 2000, 2000) * im
      y = rand(rng, 2000, 2000) + rand(rng, 2000, 2000) * im
      
      XOUT, YOUT = prepareCurveData(x, y)
      

      大致的执行时间是:
      R2025b SP3:3.17 秒
      R2025b SP4:0.54 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @time 测的第二次运行时间。

    • category:FitResult 或 FitType 对象的类别;

      使用 category 返回 FitResult 或 FitType 对象 fun 的类别时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("a*x^2+b*exp(n*x)")
      
      for i in 1:500000
          args = category(t)
      end
      

      大致的执行时间是:
      R2025b SP3:1.24 秒
      R2025b SP4:0.004 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • prepareSurfaceData:为曲面拟合准备数据输入;

      使用 prepareCurveData 时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      rng = MT19937ar(5489)
      x = randn(rng, 1000000)
      y = randn(rng, 1000000)
      z = randn(rng, 1000000)
      w = randn(rng, 1000000)
      
      for i in 1:5
          XOUT, YOUT, ZOUT, WOUT = prepareSurfaceData(x, y, z, w)
      end
      

      大致的执行时间是:
      R2025b SP3:3.33 秒
      R2025b SP4:0.82 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • numargs:FitResult 或 FitType 对象的输入参数个数;

      使用 numargs 返回 FitResult 或 FitType 对象 fun 的输入参数个数时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("poly23")
      
      for i in 1:30000000
          args = numargs(t)
      end
      

      大致的执行时间是:
      R2025b SP3:3.18 秒
      R2025b SP4:0.02 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • islinear:判断 FitResult 或 FitType 对象是否线性;

      使用 islinear 判断 FitResult 或 FitType 对象 fun 是否线性时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("poly23")
      
      for i in 1:4000000
          args = islinear(t)
      end
      

      大致的执行时间是:
      R2025b SP3:1.94 秒
      R2025b SP4:0.01 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • typecur:FitResult 或 FitType 对象的名称;

      使用 typecur 获取 FitResult 或 FitType 对象 fun 的名称时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("thinplateinterp")
      
      for i in 1:10000000
          args = typecur(t)
      end
      

      大致的执行时间是:
      R2025b SP3:2.66 秒
      R2025b SP4:0.04 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • fittype:曲线与曲面拟合的拟合类型;

      使用 fittype 创建拟合类型时性能得到了提升,示例如下:

      s = "n*u^a"
      
      for i in 1:3000
          f = fittype(s; problem="n", independent="u")
      end
      

      大致的执行时间是:
      R2025b SP3:13.26 秒
      R2025b SP4:1.07 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • dependnames:FitResult 或 FitType 对象的因变量名;

      使用 dependnames 返回 FitResult 或 FitType 对象 fun 的因变量名时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("a*x^2+b*exp(n*x)")
      
      for i in 1:3000000
          args = dependnames(t)
      end
      

      大致的执行时间是:
      R2025b SP4:0.04 秒
      R2025b SP5:0.03 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • indepnames:FitResult 或 FitType 对象的自变量名;

      使用 dependnames 返回 FitResult 或 FitType 对象 fun 的自变量名时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("a*x^2+b*exp(n*x)")
      
      for i in 1:3000000
          args = indepnames(t)
      end
      

      大致的执行时间是:
      R2025b SP4:0.04 秒
      R2025b SP5:0.01 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @time 测的第二次运行时间。

    • probnames:FitResult 或 FitType 对象的问题参数名;

      使用 probnames 返回 FitResult 或 FitType 对象 fun 的问题参数名时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("a*x^2+b*exp(n*x)")
      
      for i in 1:100000000
          args = probnames(t)
      end
      

      大致的执行时间是:
      R2025b SP4:1.57 秒
      R2025b SP5:0.50 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • islinear:判断 FitResult 或 FitType 对象是否线性;

      使用 islinear 判断 FitResult 或 FitType 对象 fun 是否线性时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("a*x^2+b*exp(n*x)")
      
      for i in 1:4000000
          args = islinear(t)
      end
      

      大致的执行时间是:
      R2025b SP4:0.019 秒
      R2025b SP5:0.008 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • coeffnames:FitType 对象的系数名;

      使用 coeffnames 获取 FitType 对象的系数名时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("a*x^2+b*exp(n*x)")
      
      for i in 1:10000000
          args = coeffnames(t)
      end
      

      大致的执行时间是:
      R2025b SP4:0.16 秒
      R2025b SP5:0.08 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

    • typecur:FitResult 或 FitType 对象的名称;

      使用 typecur 获取 FitResult 或 FitType 对象 fun 的名称时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("a*x^2+b*exp(n*x)")
      
      for i in 1:400000
          args = typecur(t)
      end
      

      大致的执行时间是:
      R2025b SP4:0.006 秒
      R2025b SP5:0.003 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • formula:FitResult 或 FitType 对象的公式;

      使用 typecur 获取 FitResult 或 FitType 对象 fun 的公式时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      t = fittype("a*x^2+b*exp(n*x)")
      
      for i in 1:300000000
          args = formula(t)
      end
      

      大致的执行时间是:
      R2025b SP4:5.20 秒
      R2025b SP5:2.51 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • fit:为数据拟合曲线或曲面;

      使用 fit 创建三维线性插值对象时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      rng = MT19937ar(5489)
      x = rand(rng, 100000)
      y = rand(rng, 100000)
      z = rand(rng, 100000)
      method = "linearinterp"
      
      for i in 1:20
          ft = fit(method, [x y], z)
      end
      

      大致的执行时间是:
      R2025b SP4:48.67 秒
      R2025b SP5:0.47 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • numcoeffs:FitResult 或 FitType 对象的参数个数;

      使用 numcoeffs 获取 FitResult 或 FitType 对象 fun 的参数个数时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      include(pkgdir(TyCurveFitting) * "/examples/docs/census.jl")
      ft = fit("poly2", cdate, pop)
      
      for i in 1:300000000
          args = numcoeffs(ft)
      end
      

      大致的执行时间是:
      R2025b SP4:9.69 秒
      R2025b SP5:2.79 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • integrate:积分 FitResult 对象;

      使用 integrate 获取 积分 FitResult 对象时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      include(pkgdir(TyCurveFitting) * "/examples/docs/census.jl")
      ft = fit("poly2", cdate, pop)
      x0 = 1700
      
      for i in 1:10000
          args = integrate(ft, cdate, x0)
      end
      

      大致的执行时间是:
      R2025b SP4:1.67 秒
      R2025b SP5:0.01 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • excludedata:从拟合中排除数据。

      使用 excludedata 计算时性能得到了提升,示例如下:

      using TyMath
      using TyCurveFitting
      rng = MT19937ar(5489)
      x = 6 * rand(rng, 1000000) .- 3
      y = 6 * rand(rng, 1000000) .- 3
      method = "box"
      v = [-1 1 -1 1]
      
      for i in 1:200
          f = excludedata(x, y, method, v)
      end
      

      大致的执行时间是:
      R2025b SP5:0.397108 秒
      R2026a:0.0936431 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T@2.5GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

  • 统计工具箱

    • gamfit:Gamma 参数估计;

      使用 gamfit 计算时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 500000);
      c = randi(rng, (false, true), 500000);
      
      gamfit(a, 0.1, c);
      

      大致的执行时间是:
      R2025b SP3:2.20 秒
      R2025b SP4:0.70 秒

    • gamlike:Gamma 负对数似然;

      使用 gamlike 计算时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 10000000);
      c = randi(rng, (false, true), 10000000);
      
      gamlike([0.5, 0.5], a, c);
      

      大致的执行时间是:
      R2025b SP3:1.81 秒
      R2025b SP4:0.91 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • fitdist:对数据进行概率分布对象拟合;

      • 使用 fitdist 对数据进行 Rician 分布拟合时得到了提升,示例如下:

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        x = rand(rng, 1000000)
        
        fitdist(x, "Rician")
        

        大致的执行时间是:
        R2025b SP3:20.89 秒
        R2025b SP4:0.64 秒

      • 使用 fitdist 对数据进行 Gamma 分布拟合时得到了提升,示例如下:

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 5000000);
        c = randi(rng, (false, true), 5000000);
        
        pd = fitdist(a, "Gamma"; cens=c)
        

        大致的执行时间是:
        R2025b SP3:28.46 秒
        R2025b SP4:0.37 秒

      • 使用 fitdist 对数据进行 Nakagami 分布拟合时得到了提升,示例如下:

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 2000000)
        
        pd = fitdist(a, "Nakagami")
        

        大致的执行时间是:
        R2025b SP3:1.47 秒
        R2025b SP4:0.40 秒

      • 使用 fitdist 对数据进行 kernel 分布拟合时得到了提升,示例如下:

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        data = rand(rng, 1000000) * 0.5 .+ 1.5
        test = rand(rng, 1, 500) * 0.5 .+ 1.5
        pd = fitdist(data, "kernel")
        
        pdf(pd.Pd, test);
        

        大致的执行时间是:
        R2025b SP3:13.53 秒
        R2025b SP4:1.27 秒

        此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • mle :最大似然估计;

      • 使用 mle 对 Rician 分布进行最大似然估计时得到了提升,示例如下:

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        x = rand(rng, 500000)
        
        p, = mle(x; dist="Rician")
        

        大致的执行时间是:
        R2025b SP3:10.55 秒
        R2025b SP4:1.10 秒

      • 使用 mle 对 Gamma 分布进行最大似然估计时得到了提升,示例如下:

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 10000000);
        
        mle(a; dist="Gamma", alpha=0.08, OptimFun="fmincon")
        

        大致的执行时间是:
        R2025b SP3:1.16 秒
        R2025b SP4:0.53 秒

      • 使用 mle 对 Nakagami 分布进行最大似然估计时得到了提升,示例如下:

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 5000000)
        
        p1, p2 = mle(a; dist="Nakagami")
        

        大致的执行时间是:
        R2025b SP3:3.72 秒
        R2025b SP4:1.66 秒

        此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • cdf:累积分布函数;

      使用 cdf 计算广义帕累托分布时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 1500000);
      pd = paretotails(a, 0.3, 0.7);
      x = rand(rng, 12000);
      # mtest-setup end
      
      cdf(pd, x, "upper");
      # R2025b SP3 使用方法为cdf.(pd, x, "upper");
      

      大致的执行时间是:
      R2025b SP3:2.74 秒
      R2025b SP4:0.13 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • pdf:概率密度函数;

      使用 cdf 计算广义帕累托分布时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 1500000)
      pd = paretotails(a, 0.2, 0.8);
      x = rand(rng, 1000);
      
      pdf(pd, x);
      

      大致的执行时间是:
      R2025b SP3:3.04 秒
      R2025b SP4:0.02 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • paretotails:具有 Pareto 尾部的广义帕累托分布;

      使用 paretotails 创建广义帕累托分布对象时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 1500000);
      
      pd = paretotails(a, 0.2, 0.8);
      

      大致的执行时间是:
      R2025b SP3:0.93 秒
      R2025b SP4:0.73 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • boundary:帕累托分布边界;

      使用 boundary 计算广义帕累托分布对象的边界点时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 1500000);
      pd = paretotails(a, 0.3, 0.7);
      
      for i in 1:3000000
          boundary(pd)
      end
      

      大致的执行时间是:
      R2025b SP3:1.91 秒
      R2025b SP4:0.0007 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • nsegments:广义帕累托分布中的段数;

      使用 nsegments 计算广义帕累托分布对象的段数时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 1500000);
      pd = paretotails(a, 0.3, 0.9);
      
      for i in 1:100000000
          nsegments(pd)
      end
      

      大致的执行时间是:
      R2025b SP3:5.16 秒
      R2025b SP4:0.80 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • random:随机数;

      使用 random 从广义帕累托分布返回随机数时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 1500000);
      pd = paretotails(a, 0.3, 0.9);
      
      random(rng, pd, 6000);
      

      大致的执行时间是:
      R2025b SP3:1.64 秒
      R2025b SP4:0.0008 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • gpfit:广义帕累托分布参数估计;

      使用 gpfit 计算时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 500000);
      
      gpfit(a);
      

      大致的执行时间是:
      R2025b SP3:3.28 秒
      R2025b SP4:0.47 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • ncx2pdf:非中心卡方分布概率密度函数;

      使用  ncx2pdf 计算时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      x1 = rand(rng, 3000, 3000)
      x2 = rand(rng, 3000, 3000)
      x3 = rand(rng, 3000, 3000)
      
      y = ncx2pdf(x1, x2, x3)
      

      大致的执行时间是:
      R2025b SP3:2.77 秒
      R2025b SP4:0.28 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • unifit:连续均匀分布参数估计;

      使用  unifit 计算时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      x = rand(rng, 100000000)
      # mtest-setup end
      
      for i in 1:5
          ahat,bhat,ACI,BCI = unifit(x)
      end
      

      大致的执行时间是:
      R2025b SP3:17.35 秒
      R2025b SP4:1.74 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • chi2gof:卡方拟合优度检验;

      使用 chi2gof 计算时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      x = randn(rng, 10000000)
      
      for i in 1:4
          h, p = chi2gof(x; Alpha=0.01)
      end
      

      大致的执行时间是:
      R2025b SP3:12.75 秒
      R2025b SP4:1.32 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • ncx2pdf:非中心卡方分布概率密度函数;

      使用 ncx2pdf 计算时性能得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      x1 = rand(rng, 200, 200, 200)
      x2 = rand(rng, 200, 200, 200)
      x3 = rand(rng, 200, 200, 200)
      
      y = ncx2pdf(x1, x2, x3)
      

      大致的执行时间是:
      R2025b SP3:7.70 秒
      R2025b SP4:1.57 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz  测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • fitdist:对数据进行概率分布对象拟合;

      使用 fitdist 对数据进行 ExtremeValue 分布拟合时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      x = rand(rng, 10000000)
      
      fitdist(x, "ExtremeValue")
      

      大致的执行时间是:
      R2025b SP4:1.24 秒
      R2025b SP5:0.61 秒

      使用 fitdist 对数据进行 Weibull 分布拟合时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      x = rand(rng, 10000000)
      for i in 1:2
          fitdist(x, "Weibull")
      end
      

      大致的执行时间是:
      R2025b SP4:2.79 秒
      R2025b SP5:1.85 秒

      使用 fitdist 对数据进行 GeneralizedExtremeValue 分布拟合时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 1000000)
      
      pd = fitdist(a, "GeneralizedExtremeValue")
      

      大致的执行时间是:
      R2025b SP4:6.73 秒
      R2025b SP5:1.53 秒

      使用 fitdist 对数据进行 HalfNormal 分布拟合时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 10000000);
      
      for i in 1:10
          pd = fitdist(a, "HalfNormal")
      end
      

      大致的执行时间是:
      R2025b SP4:2.52 秒
      R2025b SP5:1.25 秒

      使用 fitdist 对数据进行 Rayleigh 分布拟合时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      x = randi(rng, [0, 10000], 10000000)
      
      for _ in 1:10
          fitdist(x, "Rayleigh")
      end
      

      大致的执行时间是:
      R2025b SP4:5.99 秒
      R2025b SP5:1.27 秒

      使用 fitdist 对数据进行 LogNormal 分布拟合时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 50000)
      c = randi(rng, (0, 1), 50000)
      
      for i in 1:50
          pd = fitdist(a, "LogNormal"; cens=c)
      end
      

      大致的执行时间是:
      R2025b SP4:1.58 秒
      R2025b SP5:1.38 秒

      使用 fitdist 对数据进行 Loglogistic 分布拟合时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 2000000)
      
      pd = fitdist(a, "Loglogistic")
      

      大致的执行时间是:
      R2025b SP4:4.14 秒
      R2025b SP5:0.64 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T @ 2.5 GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • mle:最大似然估计;

      使用 mle 对 LogNormal 分布进行最大似然估计时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      a = rand(rng, 3000000)
      
      for i in 1:8
          p1, p2 = mle(a; dist="LogNormal")
      end
      

      大致的执行时间是:
      R2025b SP4:6.06 秒
      R2025b SP5:0.97 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM)i3-13100T@2.5GHz 测试环境上利用 julia 的 @elapsed、@belapsed 综合得出。

    • movmad:移动中位数绝对偏差。

      使用 movmad 计算时得到了提升,示例如下:

      using TyMath
      using TyStatistics
      rng = MT19937ar(5489)
      x1 = rand(rng, 10000, 10000)
      x2 = 2
      
      y = movmad(x1, x2);
      

      大致的执行时间是:
      R2025b SP5:7.73005 秒
      R2026a:0.98692 秒

      此代码是运行在 Windows 11 的 8 核 Intel(R) Core(TM) i3-13100T@2.5GHz 测试环境上利用 julia 的@elapsed、@belapsed 综合得出。

  • 信号处理工具箱

    • thd:总谐波失真

      优化了寻找谐波位置部分的算法,性能有少量提升。

      using TyMath
      using TySignalProcessing
      t = [0:0.001:(10-0.001);]
      x = @. 2 * cos(2 * pi * 100 * t) +
            0.01 * cos(2 * pi * 200 * t) +
            0.005 * cos(2 * pi * 300 * t);
      tharmdist = 10 * log10((0.01^2 + 0.005^2) / 2^2)
      r, = thd(x)
      

      大致的执行时间是:
      R2025b SP4:2.349 毫秒
      R2025b SP5:2.210 毫秒

    • snr:信噪比

      优化了 snr 函数输入信号和噪声估计时的计算方式。

      using TyControlSystems
      using TySignalProcessing
      using TyMath
      Tpulse = 20e-3
      Fs = 10e3
      t = [-1:(1/Fs):1;]
      x = rectpuls(t, Tpulse)
      rng = MT19937ar(1234)
      SNR = 53;
      y = randn(rng, size(x)) * std(x) / db2mag(SNR)
      pulseSNR, = snr(x, y)
      

      大致的执行时间是:
      R2025b SP4:55.600 微秒
      R2025b SP5:25.500 微秒

    • sfdr:无杂散动态范围

      优化了 sfdr 输入功率谱时的寻峰算法。

      using TySignalProcessing
      deltat = 1e-8
      fs = 1 / deltat
      t = [0:deltat:(1e-2-deltat);]
      x = @. cos(2 * pi * 10e6 * t) +
            3.16e-4 * cos(2 * pi * 20e6 * t) + 3.16e-4 * cos(2 * pi * 30e6 * t) +
            0.1e-5 * cos(2 * pi * 25e6 * t) + 0.1e-5 * cos(2 * pi * 28e6 * t)
      
      sxx, f = ty_periodogram(x[1:512], hann(512), [], fs, stype="power")
      sfdr(sxx, f, "power")
      

      大致的执行时间是:
      R2025b SP4:4.213 微秒
      R2025b SP5:1.270 微秒

      此代码是运行在 Windows 11 的 14 核 Intel(R) Core(TM) i7-12800H 的客户端版本 Syslab,使用 Julia @benchmark 宏进行进行计时。

    • firls:最小二乘线性相位 FIR 滤波器设计

      优化了内部计算内存分配,使用更加高效的正弦积分算法。

      using TySignalProcessing
      N = 255
      W = [1 1 1 1 1 1 1]
      F = [0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 1]
      A =
          [1 1.004124204 1.0166407385 1.0379928618 1.0689593321 1.1107207345 1.1649666232 1.2340621521 1.3213063997 1.4313388505 1.5707963268 1.7494141507 0 1]
      firls(N, F, A, W, "differentiator")
      

      大致的执行时间是:
      R2025b SP5:0.035606 秒
      R2026a:0.005351 秒

    • medfilt1:一维中值滤波

      基于双堆法重做了算法。

      using TySignalProcessing
      fs = 1000000
      t = 0:1/fs:1-1/fs
      x = sin.(2 * pi * t * 3) + 0.25 * sin.(2 * pi * t * 40)
      medfilt1(x, 1000)
      

      大致的执行时间是:
      R2025b SP5:3.223 秒
      R2026a:0.028694 秒

  • 通信工具箱

    • block_decode:重做了 block_decode 函数的功能,函数的执行速度得到提升;

      using TyCommunication
      using TyMath
      rng = MT19937ar(1234)
      n = 15
      k = 11
      data = rand(rng, 0:1, k)
      encData, = block_encode(data, n, k, "hamming/binary")
      encData[4] = Int(Bool(encData[4]))
      decData, = block_decode(encData, n, k, "hamming/binary")
      

      大致的执行时间是:
      R2025b SP2:19.900 微秒
      R2025b SP3:11.400 微秒

      此代码是运行在 Windows 11 的 14 核 Intel(R) Core(TM) i7-12800H 的客户端版本 Syslab,使用 Julia @benchmark 宏进行进行计时。

    • syndtable:优化了 syndtable;

      using TyCommunication
      m = 3
      n = 2^m - 1
      k = n - m
      parmat, = hammgen(m)
      trt = syndtable(parmat)
      

      大致的执行时间是:
      R2025b SP2:4.786 微秒
      R2025b SP3:1.780 微秒 此代码是运行在 Windows 11 的 14 核 Intel(R) Core(TM) i7-12800H 的客户端版本 Syslab,使用Julia @benchmark 宏进行进行计时。

    • muxintrlv:使用具有指定延迟的移位寄存器置换符号;

      using TyCommunication
      data7 = 1:10
      delay7 = [0, 1, 2]
      a7, b7, c7 = muxintrlv(data7, delay7)
      

      大致的执行时间是:
      R2025b SP3:10.233 微秒
      R2025b SP4:305.357 纳秒

    • muxdeintrlv:使用指定的移位寄存器恢复符号的顺序;

      using TyCommunication
      delay7 = [0, 1, 2]
      a7 = [1, 0, 0, 4, 2, 0, 7, 5, 3, 10]
      g7, h7, i7 = muxdeintrlv(a7, delay7)
      

      大致的执行时间是:
      R2025b SP3:8.300 微秒
      R2025b SP4:361.290 纳秒

    • convintrlv:使用移位寄存器置换符号;

      using TyCommunication
      using TyMath
      rng = MT19937ar(1234)
      x8 = rand(rng, 0:1, Int(5e4))
      nrows8 = 5
      slope8 = 3
      convintrlv(x8, nrows8, slope8)
      

      大致的执行时间是:
      R2025b SP3:3.487 秒
      R2025b SP4:522.200 微秒

    • convdeintrlv:使用移位寄存器恢复符号的顺序;

      using TyCommunication
      using TyMath
      rng = MT19937ar(1234)
      x8 = rand(rng, 0:1, Int(5e4))
      nrows8 = 5
      slope8 = 3
      y8, = convintrlv(x8, nrows8, slope8)
      dei, = convdeintrlv(y8, nrows8, slope8)
      

      大致的执行时间是:
      R2025b SP3:3.487 秒
      R2025b SP4:561.150 微秒

    • helintrlv:使用螺旋数组置换符号;

      using TyMath
      using TyCommunication
      rng = MT19937ar(1234)
      data = randi(rng, [0, 7], Int(5e4))
      i1, state = helintrlv(data, 500, 100, 1)
      

      大致的执行时间是:
      R2025b SP3:2.960 秒
      R2025b SP4:1.109 毫秒

    • heldeintrlv:恢复使用 helintrlv 排列的符号的顺序;

      using TyMath
      using TyCommunication
      rng = MT19937ar(1234)
      data = randi(rng, [0, 7], Int(5e4))
      i1, state = helintrlv(data, 500, 100, 1)
      heldeintrlv(i1, 500, 100, 1)
      

      大致的执行时间是:
      R2025b SP3:2.881 秒
      R2025b SP4:1.165 毫秒

    • comm_MultiplexedInterleaver:使用一组具有指定延迟的移位寄存器来置换输入符号;

      using TyCommunication
      interleaver = comm_MultiplexedInterleaver(Delay=[1; 0; 2; 1])
      rng = MT19937ar(1234)
      data = randi(rng, [0 7], Int(5e4))
      intrlvSequence = step(interleaver, data)
      

      大致的执行时间是:
      R2025b SP3:3.117 秒
      R2025b SP4:479.700 微秒

    • comm_MultiplexedDeinterleaver:使用一组具有指定延迟的移位寄存器对输入符号进行解交织;

      using TyCommunication
      interleaver = comm_MultiplexedInterleaver(Delay=[1; 0; 2; 1])
      deinterleaver = comm_MultiplexedDeinterleaver(Delay=[1; 0; 2; 1])
      rng = MT19937ar(1234)
      data = randi(rng, [0 7], Int(5e4))
      intrlvSequence = step(interleaver, data)
      deintrlvSequence = step(deinterleaver, intrlvSequence)
      

      大致的执行时间是:
      R2025b SP3:3.309 秒
      R2025b SP4:537.900 微秒

    • comm_ConvolutionalInterleaver:使用具有相同属性值的移位寄存器置换输入符号;

      using TyCommunication
      rng = MT19937ar(1234)
      data10 = randi(rng, [0, 7], Int(5e4))
      con10 = comm_ConvolutionalInterleaver(NumRegisters=2, RegisterLengthStep=3)
      intrlved10, = step(con10, data10)
      

      大致的执行时间是:
      R2025b SP3:3.541 秒
      R2025b SP4:446.700 微秒

    • comm_ConvolutionalDeinterleaver:使用移位寄存器恢复符号的顺序;

      using TyCommunication
      rng = MT19937ar(1234)
      data10 = randi(rng, [0, 7], Int(5e4))
      con10 = comm_ConvolutionalInterleaver(NumRegisters=2, RegisterLengthStep=3)
      deinterleaver = comm_ConvolutionalDeinterleaver(; NumRegisters=2, RegisterLengthStep=3)
      intrlved10, = step(con10, data10)
      deintrlvData, = step(deinterleaver, intrlved10)
      

      大致的执行时间是:
      R2025b SP3:2.952 秒
      R2025b SP4:430.100 微秒

    • comm_HelicalInterleaver:使用螺旋数组置换输入符号;

      using TyMath
      using TyCommunication
      rng = MT19937ar(1234)
      data = randi(rng, [0, 7], Int(5e4))
      hel = comm_HelicalInterleaver(; NumColumns=500, GroupSize=100, StepSize=1)
      step(hel, data)
      

      大致的执行时间是:
      R2025b SP3:1.930 秒
      R2025b SP4:1.123 毫秒

    • comm_HelicalDeinterleaver:使用螺旋数组恢复符号的顺序;

      using TyMath
      using TyCommunication
      rng = MT19937ar(1234)
      data = randi(rng, [0, 7], Int(5e4))
      hel = comm_HelicalInterleaver(; NumColumns=500, GroupSize=100, StepSize=1)
      held = comm_HelicalDeinterleaver(; NumColumns=500, GroupSize=100, StepSize=1)
      indata = step(hel, reshape(data, :, 1))
      step(held, indata)
      

      大致的执行时间是:
      R2025b SP3:2.273 秒
      R2025b SP4:1.425 毫秒

      此代码是运行在 Windows 11 的 14 核 Intel(R) Core(TM) i7-12800H 的客户端版本 Syslab,使用 Julia @benchmark 宏进行进行计时。

    • comm_PhaseNoise:对基带信号添加相位噪声

      重做了结构体,优化了滤波部分的算法。

      using TyCommunication
      using TyMath
      Random.seed!(1234)
      pnoise = comm_PhaseNoise(; Level=-50, FrequencyOffset=20)
      M = 16
      data = randi([0 M-1], 1000)
      modData = qammod(data, M)
      
      y = step(pnoise, modData)
      

      大致的执行时间是:
      R2025b SP5:0.032651 秒
      R2026a:0.0005097 秒

      此代码是运行在 Windows 11 的 14 核 Intel(R) Core(TM) i7-12800H 的客户端版本 Syslab,使用 Julia @benchmark 宏进行进行计时。

  • 相控阵工具箱

    • phased_CFARDetector:结构体类型稳定,优化内存分配,首次运行优化比例 39%;
    • phased_MonopulseFeed:结构体类型稳定,首次运行优化比例 76%;
    • getTaper:性能优化,首次运行优化比例 52%;
    • aictest:性能优化,首次运行优化比例 43%;
    • mdltest:性能优化,首次运行优化比例 26%;
    • spsmooth:性能优化,首次运行优化比例 42%。
  • 图像处理工具箱

    • padarray

      优化了 padarray 函数最常用的 constant pad 算法,函数的执行速度得到提升。

      using TyImageProcessing, TyRandom
      using BenchmarkTools
      rng = MT19937ar(5489)
      A = rand(rng, 500, 500)
      @btime padarray(A, [1 1], 2, "pre");
      

      大致的执行时间是:
      R2025b SP4:18.53 毫秒
      R2025b SP5:0.38 毫秒

    • imregionalmax

      优化了 imregionalmax 函数性能。

      using TyImageProcessing, TyRandom
      using BenchmarkTools
      rng = MT19937ar(5489)
      A = rand(rng, 500, 500) * 255
      A = round.(A);
      @btime imregionalmax(A);
      

      大致的执行时间是:
      R2025b SP4:305.66 毫秒
      R2025b SP5:1.880 毫秒

    • imrotate

      优化了 imrotate 函数性能。

      using TyImageProcessing, TyRandom
      using BenchmarkTools
      rng = MT19937ar(5489)
      A = rand(rng, 500, 500) * 255
      A = round.(A);
      @btime imrotate(A, 90);
      

      大致的执行时间是:
      R2025b SP4:1.938 毫秒
      R2025b SP5:0.36 毫秒

      此代码是运行在 Windows 11 的 14 核 Intel(R) Core(TM) i7-12800H 的客户端版本 Syslab,使用 Julia @benchmark 宏进行进行计时。

# ★科学计算 APP

# 信号分析器(全新发布)

全新发布信号分析器 APP:信号分析器(新增)是一款交互式信号处理工具,用于在时域、频域和时频域中可视化、预处理、测量、分析和比较信号。通过此应用程序,可以轻松访问 Syslab 工作区中所有符合要求的信号,对信号进行截断、削波、拆分、提取、裁剪、滤波、去趋势、去噪等预处理操作,同时可视化和比较信号的波形、频谱、持久频谱、频谱图,测量最小值、最大值、均值、中位数、峰间、RMS 等信号统计量,支持将处理后的信号导出至 Syslab 工作区或保存为 MAT 文件。

# 滤波器可视化工具

  • 修复启动函数对分子系数为标量时不兼容的问题;滤波器可视化工具支持一键关闭所有已开滤波器可视化工具窗口
  • 修复复数系数时双边带相位响应在 0 点不连续的问题

# 滤波器设计工具

桌面版滤波器设计工具新增对 IIR 滤波器的结构转换选项

# 曲线拟合器工具

  • 修复二维、三维自定义方程、线性拟合模型更改自变量名后表格不显示的问题
  • 修复输入数据为整型时打印警告太多的问题
  • 修复所有拟合选项对应的系数个数不正确的问题

# 删除或变更功能 ⚠️

# Julia 内核

Julia 内核升级引入破坏性更新 1 个。

Julia 内核升级,修改了多个元素合并类型的顺序,由逆序修改为正序,可能导致极少数特殊场景报错。

问题现象:

using Symbolics
@variables t::Real x::Number y::Complex # 旧版本正常,新版本报错
@variables y::Complex x::Number t::Real # 旧版本报错,新版本正常

问题原因:

由于该库本身的类型合并依赖合并的顺序,且 Julia 内核修改了多个元素合并类型的顺序,由逆序修改为正序,导致了上述问题。

解决方案:

对于拼接的元素,不进行类型标注,则不会产生依赖合并的顺序。

using Symbolics
@variables t x y

# Python 版本升级至 3.11.4

  • Python 从 3.7.5 升级至 3.11.4 原因:

    • Python 3.7.5 已于 2023 年终止官方维护,无安全补丁更新,存在漏洞风险
    • 现代工业级库(如 matplotlib 3.5.0=>3.7.5、numpy 1.21=>1.26 新版)逐步放弃 3.7 支持,而 Python 3.11.4 可兼容主流库,避免依赖断更
  • 破坏性说明:

    • 由于 Python 3.11.4 不支持 Win7 版本,Win7 版本会另外推出对应的安装包(Python3.7.5)

    • 部分 Python 库升级导致的不兼容,您需要确保 Python 工程代码在 Syslab 环境中运行时的兼容性(尤其升级 Python 版本后),如有需要,可通过反馈渠道给我们反馈详细信息。下图以 numpy 升级作为示例说明:

      import numpy as np
      arr = np.array([[1.2, 3.4], [5.6, 7.8]], dtype=np.float)# numpy 1.24+已废弃numpy.float
      

      numpy 1.26 移除了 np.float 等废弃别名,导致 Python 3.11 环境报错;修复关键是将模糊的 np.float 替换为 float 或 np.float64,全版本兼容,需要修改成以下代码:

      import numpy as np
      arr = np.array([[1.2, 3.4], [5.6, 7.8]], dtype=np.float64)# numpy 1.24+已废弃numpy.float
      
  • 核心 python 库升级列表(minor 及以上版本变更)

    库名 python 升级前 python 升级后
    matplotlib 3.5.0 3.7.5
    numpy 1.21.6 1.26.4
    scipy 1.7.3 1.11.4
    mindspore 2.1.1 2.5.0

# 数学工具箱

数学工具箱引入破坏性更新 1 个。

R2025b SP5 数学工具箱默认的线性代数底层算法库由 OpenBLAS 切换至 MKL。为保证精度,部分函数(linsolve)底层线性代数算法库仍保留为 OpenBLAS。

如果希望仍保留原本 OpenBLAS 作为底层算法库计算某段代码,可以使用 with_blas("libopenblas64_") do ... end 方式单独执行代码,例如:

using TyMath
A = [1 2; 3 4; 5 6; 7 8]
U,S,V = with_blas("libopenblas64_") do
    ty_svd(A)
end

# 图形工具箱

图形工具箱引入破坏性更新 1 个。

图形库函数 xline、yline 关键字参数 label 功能不再为修改图例标签。在以前的版本中,关键字参数 label 功能为修改图例标签。例如:

using TyPlot
xline(3.5;label = "xline")
legend()

从 2026a 开始关键字参数 label 为添加行标签功能,可以通过关键字参数 displayname 修改图例标签。例如:

using TyPlot
xline(3.5;label = "label", displayname = "xline")
legend()

# 通信工具箱

通信工具箱引入破坏性更新 2 个。

  1. comm_MultiplexedInterleaver:修改了参数:为寄存器设置初始状态时使用 InitialConditions 字段,删除了 Initstate_value、Initstate_index 字段,无需再手动输入所有寄存器的初始状态;

    2025b SP3 及之前版本调用方式:

    using TyCommunication
    intr = comm_MultiplexedInterleaver(Initstate_value=[[0 0], Matrix{Int64}(undef, 1, 0), [0;;], [0 0 0], [0 0 0 0 0 0 0 0 0 0]]', Initstate_index=1)
    

    2025b SP4 调用方式:

    using TyCommunication
    intr = comm_MultiplexedInterleaver(InitialConditions=0)
    

    两种调用的方式生成的是功能相同的多路复用交织/解交织对象。

  2. comm_MultiplexedDeinterleaver:修改了参数:为寄存器设置初始状态时使用 InitialConditions 字段,删除了 Initstate_value、Initstate_index 字段,无需再手动输入所有寄存器的初始状态。

    2025b SP3 及之前版本调用方式:

    using TyCommunication
    deintr = comm_MultiplexedDeinterleaver(Initstate_value=[[0 0], Matrix{Int64}(undef, 1, 0), [0;;], [0 0 0], [0 0 0 0 0 0 0 0 0 0]]', Initstate_index=1)
    

    2025b SP4 调用方式:

    using TyCommunication
    deintr = comm_MultiplexedDeinterleaver (InitialConditions=0)
    

    两种调用的方式生成的是功能相同的多路复用交织/解交织对象。

# 附录:函数列表

# 基础工具箱

基础工具箱新增函数 1 个。

函数名 函数说明
@include_dir 加载指定文件夹下的 jl 文件,不会递归加载子文件中的 jl 文件

基础工具箱修改函数 43 个。

函数名 函数变更说明
fullfile 实现正确拼接路径,增加入参检测
clear 增加入参检测
clc 增加入参检测
dir 增加入参检测
ty_format 增加入参检测
rmmissing 增加入参检测
ty_round 增加入参检测
bitget 增加入参检测
hex2dec 增加入参检测
strfind 增加入参检测,并对函数性能进行了优化
strcmpi 增加入参检测
regexp 增加入参检测
meshgrid2 增加入参检测
regexprep 修复输入参数中含特定参数时的报错问题
mode 增加入参检测
bitshift 增加入参检测
ty_floor 增加入参检测
bsxfun 增加入参检测
ty_unique 优化输入大数组时的函数性能;增加入参检测,并对 byrows=true 时输入大数组进行内存优化
fopen 增加入参检测
fprintf 增加入参检测
fread 增加入参检测,修复了指针错误定位的问题,以及修复了原先对于精度匹配(如"2*UInt16")的错误处理和报错问题
fwrite 增加入参检测
fgetl 增加入参检测
fclose 增加入参检测
readtable 增加入参检测
delete 增加入参检测;性能优化
fscanf 增加入参检测;性能优化
detectImportOptions 增加入参检测
fileparts 增加入参检测
diary 增加入参检测,增加支持使用新 io 类型来截获 stdout 的输出
save 支持追加写入 JLD2 文件时含有已存在变量名的场景;支持对 MAT 文件追加写入已存在变量名的变量
addsample 支持正确写入 Quality、支持输入空 timeseries 场景和支持时间维度不匹配场景的报错
appendtimeseries 支持 timeseries 合并时 Quality 的正确拼接
delevent 支持对于事件名使用字符串数组的输入
getdatasamplesize 修复特定场景报错的问题
timeseries 支持 AbstractFloat 类型的输入
ty_issorted 支持 AbstractArray 长度为 1 的场景
xlswrite 修复 range 超过 Z 的场景;新增参数 writemode 支持 将数据写入附加到现有文件中,而不是覆盖写入
xlsread 对于前后含有空格可转成数字的字符串进行转数字操作
Importdata 修复读取单元素电子表格不能正常显示的问题
sortrows 修复输入向量选择双输出报错的 bug
array2table 性能优化

# 图形工具箱

图形工具箱新增函数 3 个。

函数名 函数说明
groot 图形根对象
activate_figure 激活图窗
plt_isvalid 确定有效句柄

图形工具箱修改函数 59 个。

函数名 函数变更说明
colorbar 修复 colobar 创建报错
gca 新增入参检查
gcf 新增入参检查
savefig 新增入参检查
polarplot 输入矩阵类型 bug 修复;入参检查;图形对象属性完善
contour 补充关键字参数;图形对象属性完善
texlabel 性能优化
symvar 性能优化
pcolor 入参检查
sortx 修复 M 兼容调用出错
sorty 修复 M 兼容调用出错
grid 支持用法 grid("minor")
fplot 函数 bug 修复
xlim 修复 M 兼容调用报错
ylim 修复 M 兼容调用报错
histogram2 修复 histogram2 存在空值报错,设置 binwidth 绘图错误
stem 完善 plt_get/plt_set 属性
imagesc 完善 plt_get/plt_set 属性;处理缩放功能 bug
yyaxis 入参检查
xline 入参检查;新增用法 xline(xvalue,LineSpec,label)
yline 入参检查;新增用法 yline(yvalue,LineSpec,label)
ginput 入参检查
loglog 入参检查
shading 入参检查
openfig 入参检查
pie 入参检查
box 入参检查
wraptopi 入参检查
linkaxes 入参检查
tightlayout 入参检查
nexttitle 入参检查
xticks 入参检查
yticks 入参检查
sgtitle 入参检查
xticklabels 入参检查
findobj 入参检查
heatmap 入参检查
plotyy 入参检查
scatter3 入参检查
enable_show 入参检查;修复 enable_show 函数在单机版部分场景不生效的 bug
bar 支持参数 hist,histc;支持分类数组
barh 支持参数 hist,histc
meshc 函数属性完善
errorbar 图形对象属性完善
quiver 图形对象属性完善
heatmap 图形对象属性完善
area 图形对象属性完善
rectangle 图形对象属性完善
stairs 图形对象属性完善
polaraxes 图形对象属性完善
semilogx 性能优化
semilogy 性能优化
histcounts 修复 histcounts 返回值错误
imdistline 无界面模式 bug 修复
figure 性能优化
plot 修复输入复数报错
colormap colormap 函数用法修改
histogram 性能优化
surf surf 图形支持按照坐标区范围裁剪对象

# 数学工具箱

数学工具箱新增函数 3 个。

函数名 函数说明
mfft 傅里叶变换(一维、二维、三维)
scatteredInterpolant1 对二维或三维散点数据插值
numgrid 对二维区域中的网格点进行编号

数学工具箱修改函数 21 个。

函数名 函数变更说明
nufft 非均匀快速傅里叶变换:提升函数运行效率
filter1 1 维数字滤波器:提升函数运行效率
isbanded 确定矩阵是否在特定带宽范围内:提升函数运行效率
detrend 去除多项式趋势:新增支持复数输入
griddata 对二维或三维散点数据插值:新增支持 linear 外插方法,提升函数运行效率
interp1 一维数据插值(表查找):提升函数运行效率;一维数据插值(表查找):优化 pchip 函数性能
interp2 meshgrid 格式的二维网格数据插值:提升函数运行效率;meshgrid 格式的二维网格数据插值:优化 cubic、linear 算法性能,且修复当外插未 NaN 不生效的 bug
interp3 meshgrid 格式的三维网格数据的插值:优化 cubic、spline、nearest 算法性能
Graph 具备无向边的图:修复不支持空图的 bug
conv2 二维卷积:提升函数运行效率
nextpow2 2 的更高次幂的指数:修复函数 bug
cart2pol 将笛卡尔坐标转换为极坐标或柱坐标:修复函数 bug
cart2sph 将笛卡尔坐标转换为球面坐标:修复函数 bug
pol2cart 将极坐标或柱坐标转换为笛卡尔坐标:修复函数 bug
treelayout 设置树或森林的布局:修复函数 bug
detrend 去除多项式趋势:修复函数 bug
ppval 计算分段多项式:优化了函数运行速度
padecoef 时滞的 Padé 逼近:优化函数性能
pchip 分段三次 Hermite 插值多项式(PCHIP):优化函数性能
delaunay Delaunay 三角剖分:优化函数性能,修复一些四点共圆情况的 bug
mfft 傅里叶变换 (一维、二维、多维):修复函数 bug

# 符号数学工具箱

符号数学工具箱新增函数 1 个。

函数名 函数说明
sym_gcd 求最大公约数

符号数学工具箱修改函数 6 个。

函数名 函数变更说明
numden 提取分子和分母:增加接口控制是否约分化简
sym_collect 收集系数:增加接口控制升序或降序
dsolve 解微分方程组:修复函数 bug
^ 符号矩阵幂:修复函数 bug
sym_svd 符号矩阵奇异值分解:修复函数 bug
int 定积分和不定积分:修复函数 bug

# 曲线拟合工具箱

曲线拟合工具箱修改函数 11 个。

函数名 函数变更说明
dependnames FitResult 或 FitType 对象的因变量名:优化函数运行速度
indepnames FitResult 或 FitType 对象的自变量名:优化函数运行速度
probnames FitResult 或 FitType 对象的问题参数名:优化函数运行速度
islinear 判断 FitResult 或 FitType 对象是否线性:优化函数运行速度
coeffnames FitType 对象的系数名:优化函数运行速度:优化函数运行速度
typecur FitResult 或 FitType 对象的名称:优化函数运行速度
formula FitResult 或 FitType 对象的公式:优化函数运行速度
fit 为数据拟合曲线或曲面:优化函数运行速度;修复一些函数 bug
numcoeffs FitResult 或 FitType 对象的参数个数:优化函数运行速度
integrate 积分 FitResult 对象:优化函数运行速度
excludedata 从拟合中排除数据:优化函数性能

# 统计工具箱

统计工具箱修改函数 24 个。

函数名 函数变更说明
mle 最大似然估计:修改 Rician 分布的 bug;提升函数运行效率(Rician 分布,gamma 分布、Nakagamil 分布);优化了 lognormal 分布、Loglogistic 分布运行速度
andrewsplot 安德鲁斯图:新增指定 x 轴范围的选项
gamfit Gamma 参数估计:提升函数运行效率
gamlike Gamma 负对数似然:提升函数运行效率
fitdist 对数据进行概率分布对象拟合:提升函数运行效率(Rician 分布,gamma 分布、Nakagami 分布、kernel 分布);优化了 ExtremeValue 分布、Weibull 分布,GeneralizedExtremeValue 分布、halfnormal 分布、Rayleigh 分布、lognormal 分布、Loglogistic 分布运行速度,新增支持 tLocationScale 分布
cdf 累积分布函数:提升函数运行效率(paretotails 分布)
pdf 概率密度函数:提升函数运行效率(paretotails 分布)
paretotails 具有 Pareto 尾部的广义帕累托分布:提升函数运行效率
boundary 帕累托分布边界:提升函数运行效率
nsegments 广义帕累托分布中的段数:提升函数运行效率
random 随机数:提升函数运行效率,新增支持 kernel 分布;随机数:新增支持 rician,inversegaussian 分布
gpfit 广义帕累托分布参数估计:提升函数运行效率
mean 计算均值:新增支持 kernel 分布
var 样本方差:新增支持 kernel 分布
std 样本标准差:新增支持 kernel 分布
icdf 逆累积分布函数:新增支持 kernel 分布
median 概率分布的中位数:新增支持 kernel 分布
ncx2pdf 非中心卡方分布概率密度函数:提升函数运行效率
unifit 连续均匀分布参数估计:提升函数运行效率
chi2gof 卡方拟合优度检验:提升函数运行效率
scatterhist 带边缘直方图的散点图:修复 kernel 关键字参数为 overlay 时报错; 修复函数 bug
lillietest Lilliefors 检验:修复函数 bug
movmad 移动中位数绝对偏差:优化函数性能
hist3 双变量直方图:修复当 plot =false 时 绘空窗口的 bug

# 优化工具箱

优化工具箱修改函数 7 个。

函数名 函数变更说明
fminunc 求无约束多变量函数的最小值:修正输出 Hessian 矩阵的非对称异常,提升计算 Hessian 矩阵的运算效率
fmincon 寻找约束非线性多变量函数的最小值:提升函数运行效率;寻找约束非线性多变量函数的最小值:新增支持 sqp-legacy 算法选项
lsqlin 求解约束线性最小二乘问题:新增支持 interior-point 算法;提升函数运行效率
lsqnonlin 求解非线性最小二乘(非线性数据拟合)问题:新增支持 interior-point 算法,兼容数组初值与数组边界
lsqcurvefit 用最小二乘求解非线性曲线拟合(数据拟合)问题:新增支持 interior-point 算法
quadprog 二次规划:提升函数运行效率
fminsearch 使用无导数法计算无约束的多变量函数的最小值:提升函数运行效率

# 全局优化工具箱

全局优化工具箱修改函数 1 个。

函数名 函数说明
paretosearch 寻找帕累托解集:提升函数运行效率

# 信号处理工具箱

信号处理工具箱修改函数 12 个。

函数名 函数变更说明
sinad 修改了函数内部调用
thd 修复了函数内部会修改输入值的问题,优化了性能
snr 优化了性能
sfdr 修复了函数内部会修改输入值的问题,优化了性能
medfreq 修改了函数内部调用
fvtool 修复了复数系数双边相位响应不连续的问题
freqz 修改了部分内部派发
filtfilt 修改了部分内部派发
ss2zp 修改了部分内部派发
firls 优化性能,内部 sin 积分算法替换
zplane 删除了部分依赖
medfilt1 优化性能,重做了算法

# DSP 系统工具箱

DSP 系统工具箱修改函数 1 个。

函数名 函数说明
dsp_SpectrumAnalyzer 新增关键字参数 unit,referenceload

# 通信工具箱

通信工具箱新增函数 1 个。

函数名 函数说明
mlseeq 使用最大似然估计 (MLSE) 对线性调制信号进行均衡

通信工具箱修改函数 21 个。

函数名 函数变更说明
block_decode 函数优化,修复部分 bug
syndtable 函数优化
comm_LDPCDecoder 传入稠密校验矩阵时,作为稀疏矩阵索引进行处理;修复了 FinalParityChecksOutputPort 为 true,NumIterationsOutputPort 为 false 时报错的问题
comm_LDPCEncoder 传入稠密校验矩阵时,作为稀疏矩阵索引进行处理
mskdemod 修复了矩阵输入时的部分问题
muxintrlv 优化寄存器移位部分的核心算法
muxdeintrlv 优化寄存器移位部分的核心算法
convintrlv 优化寄存器移位部分的核心算法
convdeintrlv 优化寄存器移位部分的核心算法
helintrv 优化寄存器移位部分的核心算法
heldeintrlv 优化寄存器移位部分的核心算法
comm_ConvolutionalInterleaver 优化了函数执行流程与核心算法,减少了冗余计算
comm_ConvolutionalDeinterleaver 优化了函数执行流程与核心算法,减少了冗余计算
comm_HelicalInterleaver 优化了函数执行流程与核心算法,减少了冗余计算
comm_HelicalDeintrleaver 优化了函数执行流程与核心算法,减少了冗余计算
comm_MultiplexedInterleaver 优化了函数执行流程与核心算法,减少了冗余计算。为寄存器设置初始状态时使用 InitialConditions 字段,删除了 Initstate_value、Initstate_index 字段。
comm_MultiplexedDeinterleaver 优化了函数执行流程与核心算法,减少了冗余计算。为寄存器设置初始状态时使用 InitialConditions 字段,删除了 Initstate_value、Initstate_index 字段。
pskdemod 修复了输出类型为 llr,且自定义符号顺序 bug
blkdiagbfweights 修复了函数计算结果的错误
comm_MLSEEqualizer 修复了当状态数为 1 时算法无法正确工作的问题
comm_PhaseNoise 重做算法,新版算法解决了在采样率较高时,在低频处相噪拟合精度差的问题;解决了滤波器群延迟导致部分情况下 step 后数据未添加相噪的问题;更新后的 comm_PhaseNoise 不再支持修改一个不同类型的 FrequencyOffset 或 Level。例如,pn =comm_PhaseNoise(Level=[-90,-100]),此后无法令 pn.Level = -90(由向量修改为标量)

# 相控阵工具箱

相控阵工具箱新增函数 3 个。

函数名 函数说明
phased_WidebandLOSChannel 宽带视距 LOS 传播信道
phased_RangeEstimator 距离估计
phased_PhaseCodedWaveform 新增相位编码波形函数

相控阵工具箱修改函数 8 个。

函数名 函数变更说明
phased_CFARDetector 用法不变,提高函数运行效率
phased_MonopulseFeed 用法不变,提高函数运行效率
getTaper 用法不变,提高函数运行效率
aictest 用法不变,提高函数运行效率
mdltest 用法不变,提高函数运行效率
spsmooth 用法不变,提高函数运行效率
stokes 入参检查
azelaxes 入参检查

# 雷达工具箱

雷达工具箱修改函数 1 个。

函数名 函数变更说明
radarpropfactor 修复绘图不兼容的问题

# 射频工具箱

射频工具箱新增函数 16 个。

函数名 函数说明
gamma2z 将反射系数转换为阻抗
gammaml 计算两端口网络的负载反射系数
gammams 计算两端口网络的源反射系数
gammaout 计算两端口网络的输出反射系数
gammain 计算两端口网络的输入反射系数
z2gamma 将阻抗转换为反射系数
powergain 根据两端口 S 参数计算功率增益
vswr 给定反射系数 Γ 下的电压驻波比
stabilityk 两端口网络的稳定性因子 K
stabilitymu 两端口网络的稳定性因子 μ
s2rlgc 将 S 参数转换为 RLGC 传输线参数
s2t 将 S 参数转换为 T 参数
g2h 将 g 参数转换为混合 h 参数
t2s 将 T 参数转换为 S 参数
smm2s 将混合模式 2N 端口 S 参数转换为单端 4N 端口 S 参数
rlgc2s 将 RLGC 传输线参数转换为 S 参数

# 控制系统工具箱

控制系统工具箱新增函数 5 个。

函数名 函数说明
namedTF 创建带有名称标签的传递函数模型
namedSS 创建带有名称标签的状态空间模型
AnalysisPoint 控制设计模块,用于将控制系统模型中的位置标记为线性分析和控制器调整的兴趣点。
getIOTransfer 广义控制系统模型的闭环传递函数
sumblk 基于名称的互连求和连接

控制系统工具箱修改函数 13 个。

函数名 函数变更说明
step 修复时域响应计算时可能的内存溢出问题;添加用法,支持 y,t,x,ysd = step(___,config; fig = false)返回数据
stepplot 修复时域响应计算时可能的内存溢出问题
stepdata 修复时域响应计算时可能的内存溢出问题
impulse 修复时域响应计算时可能的内存溢出问题
impulseplot 修复时域响应计算时可能的内存溢出问题
impulsedata 修复时域响应计算时可能的内存溢出问题
initial 修复时域响应计算时可能的内存溢出问题
initialplot 修复时域响应计算时可能的内存溢出问题
initialdata 修复时域响应计算时可能的内存溢出问题
pid 完善数据显示
pid2 完善数据显示
pidstd 完善数据显示
pidstd2 完善数据显示

# 系统辨识工具箱

系统辨识工具箱修改函数 31 个。

函数名 函数变更说明
detrend 错误提示修改,新增入参检测
ifft 错误提示修改,新增入参检测
chgFreqUnit 错误提示修改,新增入参检测
idinput 错误提示修改,新增入参检测
setpvec 错误提示修改,新增入参检测
lsim 错误提示修改,新增入参检测;修复越界导致的性能缺陷问题
coherence 错误提示修改,新增入参检测
cra 错误提示修改,新增入参检测
ar 错误提示修改,新增入参检测
arma 错误提示修改,新增入参检测
arma_ssa 错误提示修改,新增入参检测
armax 错误提示修改,新增入参检测
arx 错误提示修改,新增入参检测
arxar 错误提示修改,新增入参检测
bj 错误提示修改,新增入参检测
oe 错误提示修改,新增入参检测
pem 错误提示修改,新增入参检测
polyest 错误提示修改,新增入参检测
n4sid 错误提示修改,新增入参检测;修复越界导致的性能缺陷问题
subSpaceid 错误提示修改,新增入参检测
tfest 错误提示修改,新增入参检测;修复拟合不精准问题;优化拟合效果
estimate_x0 错误提示修改,新增入参检测
iddata 错误提示修改,新增入参检测
idfrd 错误提示修改
idgrey 错误提示修改;修复传参类型不支持问题
init 错误提示修改
sensitivity 错误提示修改
bode 错误提示修改,新增入参检测
compare 错误提示修改
greyest 新增 greyestOption:lsqnonline 优化算法;优化拟合效果
findstates 修复越界导致的性能缺陷问题

# 鲁棒控制工具箱

鲁棒控制工具箱修改函数 14 个。

函数名 函数变更说明
augw 错误提示修改,新增入参检测
makeweight 错误提示修改,新增入参检测
mixsyn 错误提示修改,新增入参检测
umat 错误提示修改,新增入参检测
diag 错误提示修改,新增入参检测
uss 错误提示修改,新增入参检测
balancmr 错误提示修改,新增入参检测
bstmr 错误提示修改,新增入参检测
hankelmr 错误提示修改,新增入参检测
ncfmr 错误提示修改,新增入参检测
schurmr 错误提示修改,新增入参检测
reduce 错误提示修改,新增入参检测
hinfsyn 错误提示修改,新增入参检测
diskmargin 修复数学库引起的衰退问题

# 图像处理工具箱

图像处理工具箱新增函数 1 个。

函数名 函数说明
pcwrite 3D 点云数据保存功能

图像处理工具箱修改函数 30 个。

函数名 函数变更说明
imread 优化读取.TIF 序列文件时报错 bug
imfilter 修复报错提示信息中的变量名错误
imhistmatch 修复多重判断时,变量名错误 bug
imreducehaze 修复报错提示信息中的变量名错误
imregionalmax 修复报错提示信息中的变量名错误;优化 imregionalmax 函数性能
stdfilt 修复基于 std 的箱体滤波计算 bug;新增输入数组超过 3 维的报错提示
imrotate 优化函数功能实现
integralBoxFilter 支持 4 维及以上数组;新增对 4 维及以上数组的支持
ORBPoints 修复输入有 NaN 时的异常报错
bwlookup 新增输入数组为空时的报错提示
bwmorph 新增输入数组为空时的报错提示
bwperim 新增输入数组为空时的报错提示
image 新增 python3.11.4 的兼容;hold on 时绘图 y 轴坐标调整,对标 MATLAB
bwboundaries 修复输入为空数组时的报错
bwulterode 修复输入为空数组时的报错
bwhitmiss 修复输入为空数组时的报错
xyz2double 补充异常输入时的报错提示帮助文档链接
xyz2uint16 补充异常输入时的报错提示
padarray 优化 padarray 函数性能
pcread 新增支持对.ply, .pcd 格式数据的 color, normal, intensity 字段读取
imshow 新增跳过多线程处理
drawcircle 新增跳过多线程处理
drawellipse 新增跳过多线程处理
drawrectangle 新增跳过多线程处理
getframe 新增跳过多线程处理
hasframe 新增跳过多线程处理
imdistline 新增跳过多线程处理
imfinfo 新增跳过多线程处理
montage 新增跳过多线程处理
readFrame 新增跳过多线程处理

# 机器学习工具箱

机器学习工具箱修改函数 15 个。

函数名 函数变更说明
view 增加入参检查;兼容 python3.11
test 增加入参检查,添加 i=0 时输出全折测试掩码矩阵的功能
partialDependence 兼容 python3.11
fitsemigraph 兼容 python3.11
fitsemiself 兼容 python3.11
kmeans 兼容 python3.11
ridge 兼容 python3.11
evfit 移除对 TyOptimization 与 TyStatistics 的依赖
HistcGradientBoosting 兼容 python3.11
tsne 兼容 python3.11
lasso 兼容 python3.11
dummyvar 兼容 python3.11
AdaBoostrTree 兼容 python3.11
kmedoids 修复在出现空簇时的断言失败问题
SVRbagger 兼容 python3.11

# 深度学习工具箱

深度学习工具箱修改函数 6 个。

函数名 函数变更说明
dataset_dir 增加入参检查
trainNetwork 兼容 python3.11
envinit 兼容 python3.11
align 兼容 python3.11
softmax 兼容 python3.11
softmaxLayer 使用自定义的 StableSoftmax 以避免训练出现 NaN

# M 兼容新增函数

M 兼容新增 52 个 M 函数,当前共提供 2033 个 M 函数及帮助文档。

函数名 函数说明
lineprof 探查函数执行时间
profile 探查脚本的执行时间
fdesign_lowpass 低通滤波器规格
ga 用遗传算法求函数的最小值
diary 将命令行窗口文本记录到日志文件中
reordercats 对 categorical 数组中的类别重新排序
hex fi 对象的存储整数的十六进制表示
rotx 绕 x 轴旋转的旋转矩阵
roty 绕 y 轴旋转的旋转矩阵
rotz 绕 z 轴旋转的旋转矩阵
fmmod 调频
uigetfile 打开文件选择对话框
msgbox 创建消息对话框
matfile 访问和更改 MAT 文件中的变量,而不必将文件加载到内存中
restoredefaultpath 将搜索路径还原为出厂安装时的状态
genvarname 从字符串构造有效的变量名称
wdenoise 小波信号去噪
mlseeq 使用最大似然序列估计均衡线性调制信号
spdiags 提取非零对角线并创建稀疏带状对角矩阵
dsolve 解微分方程组
pagemldivide 逐页矩阵左除
s2s 将 S 参数转换为具有不同阻抗的 S 参数
timeit 测量运行函数所需的时间
spalloc 为稀疏矩阵分配空间
spfun 将函数应用于非零稀疏矩阵元素
spones 将非零稀疏矩阵元素替换为一
sprandsym 稀疏对称随机矩阵
doppler 构建多普勒频谱结构
roifill (不推荐)在灰度图像中填充指定的感兴趣区域(ROI 多边形)
mvnrnd 多元正态随机数
cholcov Cholesky 类协方差分解
dsp.SineWave 产生离散正弦波
comm.PhaseNoise 对基带信号添加相位噪声
dlmread (不推荐)将 ASCII 分隔的数值数据文件读取到矩阵
isvalid 确定有效句柄
waitbar 创建或更新等待条对话框
inputParser 函数的输入解析器
parse 解析函数输入
mxGetIr 稀疏矩阵 IR 数组
mxGetJc 稀疏矩阵 JC 数组
mxGetPr 获取数组中实数数据元素
mxCreateSparse 2-D 稀疏矩阵
mxIsLogicalScalar 判断标量数组是否为 mxLogical 类型
mxCreateLogicalScalar 创建逻辑值标量
mxIsSparse 判断输入的 mxArray 是否为稀疏矩阵
mxDestroyArray 释放通过 MXCREATE* 系列函数分配的动态内存
mex 编译 MEX 函数和引擎或 MAT 文件应用程序
mexFunction 使用 C Matrix API 编译的 C/C++ MEX 函数的入口函数
pcwrite 给 PLY 或 PCD 文件中写入三维点云数据
getIOTransfer 广义控制系统模型的闭环传递函数
sumblk 基于名称进行互连的求和点
AnalysisPoint 线性分析点