# 2025b SP2 V1.0.9 发行说明


本文介绍 Syslab 2025b SP2 V1.0.9 的最新特征。

  • 版本:Syslab 2025b SP2

  • 内部版本号:V1.0.9

  • 发行时间:2025.09

Syslab 2025b SP2 V1.0.9 正式发布。此版本交互式编程环境优化了 IDE、编码助手、调试、APP Designer、代码生成、Copilot 插件、M 导入工具等多个模块;科学计算函数库优化了 14 个函数库及若干个函数。

# 新增功能

# 交互式编程环境

  • IDE 界面改进

    • ★新增命令历史记录面板,方便用户查看和执行历史命令;
    • ★新增编码助手;
      • 签名帮助:支持图形库184个函数的签名帮助,填写函数实际参数时提示参数文档信息,并可通过上下键切换函数用法提示;
      • 关键词参数补全:填写函数实际参数时,输入逗号、分号可提示函数对应的关键词参数补全列表,并可点击列表项(或使用快捷键 Ctrl + I)展开参数的文档信息;
      • 鼠标悬停:函数的鼠标悬停信息目前提供“查看文档”按钮,打开浏览器跳转至相应的函数文档页面。
    • ★修复 Windows上命令行终端多次连续按下 Ctrl+C 可能导致命令行终端崩溃的问题;
    • ★增加单次数组内存分配的上限约束选项,并在内存申请超过上限时给出明确报错信息;
    • ★for 作用域全局变量遮蔽检查与快速修复;
    • 资源管理器支持文件/文件夹按类型、名称、修改时间排序;
    • 表格视图支持标量粘贴数据;
    • 新建脚本默认保存路径为当前工作路径;
    • Julia 格式化支持续行符;
      • 空白多行注释可在单行矩阵(hcat)、多行矩阵(vcat)、二元操作符表达式中当作续行符(line continuation)使用。
    • 性能分析报告页面将性能分析数据进行分级,解决了大数据场景下性能分析报告页面渲染异常的问题。
  • 调试功能改进

    • 部分场景调试报错堆栈优化,显示底层函数行号;
    • 修复未定义宏导致调试中断的问题;
    • 修复函数无法调试到 return 所在行的问题;
    • 调试控制台交互优化,支持控制台的输出随面板自适应调整及 Tab 快捷键在无补全项列表时支持缩进;
    • Julia 脚本的调试使能改进,避免其他语言的调试配置项对 Julia 脚本调试的干扰。
  • APP Designer 功能改进

    • 新增子界面功能;
    • 新增 uitable、uimenu 组件;
    • 新增组件随窗口缩放功能。
  • 绘图功能改进

    • 数据提示标签支持添加曲线 label;
    • 回折曲线游标交互优化。
  • Syslab 代码生成功能改进

    • 减少了生成调试信息的 C++ 代码,优化了 C++ 代码的编译速度(测例生成的 C++ 代码编译需要原本需要 26 分钟优化至 6 分钟)。
  • Copilot 插件改进

    • 全新上下文菜单支持:可通过右键菜单对对话进行复制/新建聊天;
    • 新增标题控制栏按钮:通过标题控制栏按钮进行会话管理与快速设置;
    • 支持单点登录:登录 Syslab 之后,无需重复登录;
    • 增加快捷指令。
      • 编辑器提供“一键解释”功能,可对选中的代码快速进行代码解释;
      • 终端代码诊断:提供“终端报错代码诊断”,可对终端报错信息一键诊断。
  • M 导入工具改进

    • 优化了语法解析错误时的报错信息;
    • Julia 调用 M 兼容支持 Julia 结构体或字典转为 M 的 struct 类型;
    • M 兼容 IDE 新增重命名符号的功能(右键菜单,或快捷键 F2);
    • M 函数性能优化;
      • 优化了大数据的数组拼接性能,从 7.22s 提升到 0.25s;
      • det 函数 5min -> 0.65s;
      • inv 函数 4.7s -> 0.63s。
    • 新增 40 个 M 函数,当前函数总数为 1981 个,提供 1030 个 M 函数帮助文档。

# 科学计算函数库

# 功能优化

# 性能优化

  • 绘图

    云化绘图性能优化:云化绘图的性能得到改进,尤其在循环绘图的场景。例如,以下代码 2w 数据循环绘图 100 次。该代码的执行速度比上一版本大约快 100 倍。

    using TyPlot
    
    @time begin
        iterations = 1000
        last1 = 100
        n = 20000
        r = collect(LinRange(2.5, 4.0, n))
        x = 0.2 * ones(n)
    
        figure()
        hold("on")
        for i in 0:999
            global x, r
            x = r .* x .* (1 .- x)
            if i >= iterations - last1
                plot(r,x)
            end
        end
    end
    

    大致执行时间是:
    R2025b SP1:35s
    R2025b SP2:0.36s

    此代码是运行在 Ubuntu 20.04.6 LTS 的 8 核 Intel(R) Xeon(R) Gold 5220 CPU @ 2.20GHz 云化测试系统上,使用 Julia @time 宏进行进行计时。

  • 数学、统计与优化

    • gevlike:计算数据的 GEV 负对数似然值性能得到了改进;

      • 示例 1:计算参数为 [0.5, 0.5, 0.5] 时,数据 a 的 GEV 负对数似然值比上一版本约快 3 倍;

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 20000000);
        gevlike([0.5, 0.5, 0.5], a);
        

        大致的执行时间是:
        R2025b SP1:1.05511s
        R2025b SP2:0.369914s

      • 示例 2:计算参数为 [0.4, 0.4, 0.4] 时,数据 a 的 GEV 负对数似然值比上一版本约快 3 倍;

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 20000000);
        gevlike([0.4, 0.4, 0.4], a);
        

        大致的执行时间是:
        R2025b SP1:1.0574s
        R2025b SP2:0.359736s

      • 示例 3:计算参数为 [0.6, 0.6, 0.6] 时,数据 a 的 GEV 负对数似然值比上一版本约快 3 倍。

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 20000000);
        gevlike([0.6, 0.6, 0.6], a);
        

        大致的执行时间是:
        R2025b SP1:1.07423s
        R2025b SP2:0.373797s

    • patternsearch:使用 s 模式搜索寻找函数最小值;

      • 对于 2 维边界约束问题的模式搜索提升 7 倍左右,示例如下:

        using TyMath
        using TyGlobalOptimization
        
        func = x -> exp(-x[1]^2 - x[2]^2) * (1 + 5 * x[1] + 6 * x[2] + 12 * x[1] * cos(x[2]))
        lb = [0, -Inf]
        ub = [Inf, -3]
        x0 = [1, -5]
        nvars = 2
        
        for i in 1:100000
            best_x, best_y, output = patternsearch(func, nvars, x0, lb, ub)
        end
        

        大概的执行时间是:
        R2025b SP1:0.2870s
        R2025b SP2:0.0441s

      • 对于边界约束问题的模式搜索提升 600 倍左右,示例如下:

        using TyMath
        using TyGlobalOptimization
        func = x -> exp(-x[1]^2 - x[end]^2) * (1 + 5 * x[1] + 6 * x[end] + 12 * x[1] * cos(x[end]))
        lb = -10 * ones(1000)
        ub = 10 * ones(1000)
        x0 = zeros(1000)
        nvars = 1000
        
        for i in 1:3
            best_x, best_y, output = patternsearch(func, nvars, x0, lb, ub)
        end
        

        大概的执行时间是:
        R2025b SP1:0.2228s
        R2025b SP2:0.0008s

    • griddata (对二维或三维散点数据):改进了二维情况下 natural 方法的性能;对“cubic”、“linear”插值方法的底层算法进行变更,“linear”插值方法除查询点在顶点边界上内处理方式与对标软件不同外,其余完全一致。

      在处理二维情况下,采用 natural 方法的插值性能得到了改进,例如,以下代码对于长度为 500 的样本点 61*61 的查询点求解 natural 方法下的插值,执行速度比上一个版本大约快 50 倍。

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

      大概的执行时间是:
      R2025b SP1:0.2050s
      R2025b SP2:0.0046s

      作为另外一个示例,代码的执行速度比上一个版本大约快 223 倍。

      using TyMath
      using TyBase
      rng = MT19937ar(5489)
      x = -2.5 .+ 5 * rand(rng, 500);
      y = -2.5 .+ 5 * rand(rng, 500);
      v = x .* exp.(-x .^ 2 - y .^ 2);
      tq = LinRange(3 / 4 * pi + 0.2, 2 * pi - 0.2, 150)
      xq = [2.8 * cos.(tq); 1.7 * cos.(tq); cos.(tq)]
      yq = [2.8 * sin.(tq); 1.7 * sin.(tq); sin.(tq)]
      near = "natural"
      
      z1 = griddata(x, y, v, xq, yq, near);
      

      大概的执行时间是:
      R2025b SP1:0.4924s
      R2025b SP2:0.0022s

      此代码是使用 julia 的 @elapsed、@belapsed 综合得出。

      “cubic”插值方法计算精度与竞品软件一致;且计算性能得到了提升,示例如下:

      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);
      z1 = griddata(x, y, v, xq, yq, "cubic")
      

      大致的执行时间是:
      R2025b SP1: 228.91 秒
      R2025b SP2: 5.33 秒

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

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

      使用“spline”、“linear”、“pchip”插值方法进行计算时性能得到了改进,如对于“spline”插值方法,示例如下:

      using TyMath
      using TyBase
      x = 1:1000;
      y = sin.(x);
      xi = LinRange(1, 1000, 134217728);
      yi = interp1(x, y, xi, "spline");
      

      大致的执行时间是:
      R2025b SP1: 1.28 秒
      R2025b SP2: 0.33 秒

      对于“linear”插值方法,示例如下:

      using TyMath
      using TyBase
      x = 1:1000;
      y = sin.(x);
      xi = LinRange(1, 1000, 134217728);
      yi = interp1(x, y, xi, "linear");
      

      大致的执行时间是:
      R2025b SP1: 0.72 秒
      R2025b SP2: 0.48 秒

      对于“pchip”插值方法,示例如下:

      using TyMath
      using TyBase
      x = 1:1000;
      y = sin.(x);
      xi = LinRange(1, 1000, 134217728);
      yi = interp1(x, y, xi, "pchip");
      

      大致的执行时间是:
      R2025b SP1: 1 秒
      R2025b SP2: 0.35 秒

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

  • 信号处理工具箱

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

      using TySignalProcessing
      b, a = ellip(6, 3, 50, 300 / 500)
      fvtool(b, a)
      

      大致的执行时间是:
      R2025b SP1: 0.078 s
      R2025b SP2: 0.035 s

    • firpmord:优化了 firpmord 函数内部的矩阵运算和内存分配;

      using TySignalProcessing
      a = [1500 2000]
      b = [1 0]
      c = [0.001 0.01]
      firpmord(a, b, c, 8000)
      

      大致的执行时间是:
      R2025b SP1: 1.490 μs
      R2025b SP2: 339.3 ns

    • vitdec:优化了 vitdec 内部的内存分配;

      using TyCommunication
      using TyMath
      rng = MT19937ar(1234)
      t = poly2trellis(3, [6 7])
      data = rand(rng, 0:1, 70)
      codedData, = convenc(data, t)
      tbdepth = 34
      vitdec(codedData, t, tbdepth, "trunc", "hard")
      

      大致的执行时间是:
      R2025b SP1: 9.900 μs
      R2025b SP2: 6.133 μs

    • biterr:重做了 biterr 的算法,性能有较大提升;

      using TyCommunication
      using TyMath
      rng = MT19937ar(1234)
      x = randi(rng, [0, 1], 1000)
      y = randi(rng, [0, 1], 1000)
      z = biterr(x, y)
      

      大致的执行时间是:
      R2025b SP1: 158.8 μs
      R2025b SP2: 5.025 μs

    • comm_PNSequence:优化了内部运算;

      using TyCommunication
      pnSequence = comm_PNSequence(Polynomial=[1 0 0 1 0 1], SamplesPerFrame=31, InitialConditions=[0 0 0 0 1])
      step(pnSequence);
      

      大致的执行时间是:
      R2025b SP1: 2.110 μs
      R2025b SP2: 493.4 ns

    • comm_GoldSequence:优化了内部运算。

      using TyCommunication
      gs = comm_GoldSequence(FirstPolynomial=[1 0 0 1 0 1],
      SecondPolynomial=[1 1 1 1 0 1],
      FirstInitialConditions=[0 0 0 0 1],
      SecondInitialConditions=[0 0 0 0 1],
      Index=4, SamplesPerFrame=10, OutputDataType=Int64)
      step(gs)
      

      大致的执行时间是:
      R2025b SP1: 2.833 μs
      R2025b SP2: 1.330 μs

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

    • tf2zpk:优化了 tf2zpk 函数的首次运行时间;

      using TySignalProcessing
      b = [2 3 0]
      a = [1 0.4 1]
      b, a = eqtflength(b, a)
      @time z, p, k = tf2zpk(b, a)
      

      大致的执行时间是:
      R2025b SP1: 0.433 秒
      R2025b SP2: 0.288 秒

    • filtic:优化了 filtic 函数中的内存分配;

      using TySignalProcessing
      b, a = butter(200, 0.6)
      Y = 1
      @benchmark filtic(b, a, Y)
      

      大致的执行时间是:
      R2025b SP1: 11.90 微秒
      R2025b SP2: 3.44 微秒

    • zp2tf:优化了 zp2tf 函数的执行效率;

      using TySignalProcessing
      using TyBase
      w = logspace(-1, 1)
      z, p, k = besselap(6)
      @benchmark num, den = zp2tf(z, p, k)
      

      大致的执行时间是:
      R2025b SP1: 774.242 纳秒
      R2025b SP2: 145.755 纳秒

    • tf2sos:优化了 tf2sos 函数的首次执行时间;

      using TySignalProcessing
      nm, dn = butter(4, 0.5)
      @time sn, gn = tf2sos(nm, dn)
      

      大致的执行时间是:
      R2025b SP1: 1.355 秒
      R2025b SP2: 1.038 秒

    • eqtflength:优化了 eqtflength 函数的内存分配;

      using TySignalProcessing
      num = [0.0 0 2]
      den = [4.0 0 3 -1]
      @time b, a, n, m = eqtflength(num, den)
      

      大致的执行时间是:
      R2025b SP1: 195.658 纳秒
      R2025b SP2: 141.622 纳秒

    • grpdelay:优化了 grpdelay 函数的首次执行时间;

      using TySignalProcessing
      z, p, k = butter(6, 0.2, "lowpass"; otype="zpk")
      sos = zp2sos(z, p, k; g_flag=false)
      @time grpdelay(sos, 128)
      

      大致的执行时间是:
      R2025b SP1: 5.402189 秒
      R2025b SP2: 1.898401 秒

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

# 科学计算 APP

曲线拟合 APP

修改绘制曲面的采样逻辑、等高线图的层级规则。曲面、等高线颜色映射修改至与 TyPlot 保持一致。

# 删除或变更功能 ⚠️

# 信号处理工具箱

信号处理工具箱引入破坏性更新 2 个。

  1. tf2zp

    • 修改 1:Syslab 2025b SP1 版本引入,tf2zp 的零极点总是输出复数,而不是在虚部为 0 时,输出实数;

      b = [2, 3]
      a = [1, 1 / sqrt(2), 1 / 4]
      z,p,k = tf2zp(b,a)
      

      更新前结果:

      z
      1-element Vector{Float64}:
        -1.5
      

      更新后结果:

      z
      1-element Vector{ComplexF64}:
        -1.5 + 0.0im
      
    • 修改 2:Syslab 2025b SP1 版本引入,在输入的传递系数分子为矩阵时,输出零点由向量更改为矩阵。

      b = [1 6 11]
      a = [1 1/sqrt(2) 1/4]
      z,p,k = tf2zp(b,a)
      

      更新前结果:

      z
      2-element Vector{ComplexF64}:
        -3.0000000000000004 + 1.4142135623730954im
        -3.0000000000000004 - 1.4142135623730954im
      

      更新后结果:

      z
      2×1 Matrix{ComplexF64}:
        -3.0000000000000004 + 1.4142135623730954im
        -3.0000000000000004 - 1.4142135623730954im
      
  2. grpdelay

    Syslab 2025b SP1 版本引入,grpdleay(sos,w) 和 grpdelay(sos,f,fs) 用法,输出的频率 wout 更改为总是向量。

    b,a = butter(10,0.6)
    sos, = tf2sos(b,a)
    _,wout = grpdelay(sos,(pi/10:pi/10:pi)')
    

    更新前结果:

    wout
    1×10 adjoint(::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}) with eltype Float64:
     0.314159  0.628319  0.942478  1.25664  1.5708  1.88496  2.19911  2.51327  2.82743  3.14159
    

    更新后结果:

    wout
    10-element Vector{Float64}:
     0.3141592653589793
     0.6283185307179586
     0.9424777960769379
     1.2566370614359172
     1.5707963267948966
     1.8849555921538759
     2.199114857512855
     2.5132741228718345
     2.827433388230814
     3.141592653589793
    

# 附录:函数列表

# 基础工具箱

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

函数名 函数说明
msize 数组大小,与原生 size 函数不同,对于标量和向量,返回二维扩展大小,与 MATLAB 的 size 函数结果相同
npzwrite 将数组数据保存为 .npy 或 .npz 格式文件
npzread 读取 NumPy .npy 或 .npz 文件中的数组数据

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

函数名 函数变更说明
csvwrite 新增关键字参数 mode,以支持不覆盖文件写入;新增入参检查
csvread 新增入参检查
ty_unique 新增关键字参数 return_counts,以支持返回数组元素和对应计数
save 新增入参检查
load 暴露关键字参数 toworkspace,可供用户选择加载参数是否保存到工作目录;新增入参检查
dec2bin 新增入参检查
dec2hex 新增入参检查
num2hex 新增入参检查
bin2dec 新增入参检查
hex2num 新增入参检查
xlsread 新增入参检查;新增参数,支持读取所有表格
xlswrite 新增入参检查
power 新增入参检查
importdata 新增入参检查
find 新增入参检查
sscanf 新增入参检查
ty_sort 新增入参检查
squeeze 新增入参检查
strcmp 新增入参检查
clearvars 新增入参检查
exist 新增入参检查
flintmax 新增入参检查
discretize 新增入参检查;修复 discretize 函数中原先分类使用字典导致可能存在无序的问题
accumarray 新增入参检查
maxk 新增入参检查
setxor 新增入参检查
textscan 新增入参检查
idivide 新增入参检查
movsum 新增入参检查
fillmissing 新增入参检查
ismember 性能优化
uniquetol 新增入参检查
fullfile 未折叠重复的文件分隔符问题修复
mink 新增入参检查
sortrows 新增入参检查
ndgrid 新增入参检查
delete 支持删除以 "/" 开头的绝对路径(Linux)
resample 支持空输入和复数输入

# 图形工具箱

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

函数名 函数说明
contourc 低级等高线矩阵计算

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

函数名 函数变更说明
ezplot 修复特殊示例运行报错 g1(x, y) = x^2 - y^4; ezplot(g1)
figure figure 新增关键字参数 windowstate,新增入参检查
legend 新增入参检查;新增用法 legend("show")、legend("hide")、legend("toggle")
ty_set 新增用法 plt_set(lines, "xdata", x, "ydata", y) # lines 为多条线数组
plot3 新增入参检查
bar 新增入参检查;补充关键字参数属性
hold 新增入参检查
scatter 新增入参检查;补充关键字参数属性
xlabel 新增入参检查
ylabel 新增入参检查
zlabel 新增入参检查
title 新增入参检查
xlim 新增入参检查
ylim 新增入参检查
zlim 新增入参检查
colorbar 新增入参检查
saveas 新增入参检查
cla 新增入参检查
subplot 新增入参检查
stem 新增入参检查
plt_close 新增入参检查;调整 plt_close 函数的派发
plt_delete 新增入参检查
clf 新增入参检查
line 新增入参检查
grid 新增入参检查
alpha 新增入参检查
colorcube 新增入参检查
semilogx 新增入参检查
semilogy 新增入参检查
plt_view 新增入参检查
rgb2hsv 新增入参检查
histogram 新增入参检查
surf 新增入参检查
imagesc 新增入参检查
plt_set 新增入参检查
plt_get 新增入参检查
annotation 新增入参检查
plt_axes 新增入参检查
patch 新增入参检查
contourf 新增入参检查
fplot 新增入参检查
axis 新增入参检查
mesh 新增入参检查
quiver3 新增入参检查
meshc 新增入参检查
colormap 新增入参检查
histcounts 新增入参检查
text 新增入参检查
hist 新增入参检查
contour 新增入参检查
contour3 新增入参检查
wrapToPi 新增用法
wrapTo2Pi 新增用法
shading 支持传入数组
plt_subplot 补充关键字参数属性

# 数学工具箱

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

函数名 函数变更说明
interp1 一维数据插值(表查找):提高函数运行效率
ty_ifft 快速傅里叶逆变换:提高函数运行效率
ty_fft 快速傅里叶变换:支持 reshape 后的复数数组类型
polyshape 二维多边形形状:修复退化情况报错
boundingbox polyshape 的边界框:修复输入多边形向量时应返回并集的错误
isinterior polyshape 内的查询点:修复对于退化多边形内查找点报错的问题
rotate 旋转 polyshape:修复旋转角度只能为整数的错误
interp2 meshgrid 格式的二维网格数据插值:spline 算法新增支持维度小于 4 的数据输入;函数用法不变,修复函数 bug
griddata 1. cubic 算法:delaunay 三角化和插值算法逻辑修改,提升性能和精度
2. linear 算法:delaunay 三角化逻辑修改,提升精度
3. 函数用法不变,提升 natural 方法运行效率
etree 消去树:函数用法不变,优化函数运行效率
colamd 列近似最小度排列:新增支持稠密矩阵输入
symamd 对称近似最小度置换:新增支持稠密矩阵输入
interp3 meshgrid 格式的三维网格数据的插值:函数用法不变,修复函数 bug

# 曲线拟合工具箱

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

函数名 函数变更说明
plot3fit 绘制三维 FitResult 结构体:修改 fit 函数设置 exclude 参数 plot3fit 绘制图形不一致的问题

# 符号数学工具箱

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

函数名 函数变更说明
ezplot 绘制符号表达式、方程或函数:函数用法不变,修复函数 bug
fcontour 绘制等高线:函数用法不变,修复函数 bug
fimplicit 绘制隐函数:函数用法不变,修复函数 bug
fmesh 绘制三维网格图:函数用法不变,修复函数 bug
fplot 绘制表达式或函数:函数用法不变,修复函数 bug
fplot3 三维参数化曲线绘图函数:函数用法不变,修复函数 bug
fsurf 绘制三维曲面:函数用法不变,修复函数 bug

# 统计工具箱

统计工具箱新增函数 3 个。

函数名 函数变更说明
statset 创建统计选项结构体
kernelcdf 核累积分布函数
kernelpdf 核分布概率密度函数

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

函数名 函数变更说明
paramci 增加入参检测:函数运行效率优化
partialcorri 针对内部变量调整的偏相关系数:函数运行效率优化
movvar 移动方差:函数运行效率优化
johnsrnd 约翰逊系统随机数:函数运行效率优化
gamlike Gamma 负对数似然:函数运行效率优化
mle 最大似然估计:函数用法不变,修复函数 bug
ksdensity 单变量和双变量数据的核平滑函数估计:函数用法不变,修复函数 bug
binofit 二项式参数估计:函数用法不变,修复函数 bug
movmedian 移动中位数:函数用法不变,优化函数运行效率
gevlike 广义极值分布负对数似然:函数用法不变,优化函数运行效率
fitdist 对数据进行概率分布对象拟合:新增支持 kernel 分布选项

# 优化工具箱

优化工具箱新增函数 1 个。

函数名 函数说明
checkGradients 根据有限差分近似检查一阶导数

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

函数名 函数变更说明
fmincon 优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
fminunc 优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
fsolve 优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
fseminf 优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
fminimax 优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
fgoalattain 优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
lsqnonlin 优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
lsqcurvefit 优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
lsqlin 求解约束线性最小二乘问题:优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
quadprog 二次规划:函数用法不变,修复函数 bug
fsefminf 求解半无限约束多变量非线性函数的最小值:优化选项支持标量有限差分因子,并在应用求解器时自动扩展为向量
intlinprog 混合整数线性规划 (MILP):新增支持半连续和半整数约束

# 全局优化工具箱

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

函数名 函数变更说明
ga 用遗传算法寻找函数最小值:支持交叉和变异选项
MultiStart 寻找多个局部最小值:修复指定选项 StartPointsToRun="bounds" or "bounds-ineqs" 出现的边界未定义问题
patternsearch 使用模式搜索寻找函数最小值:函数用法不变,优化函数运行效率

# 信号处理工具箱

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

函数名 函数变更说明
impz 函数功能优化
eqtflength 函数性能优化
tf2sos 函数性能优化
tf2zp 函数性能优化
zp2sos 函数性能优化
zp2tf 函数性能优化
filtic 修复输入传递函数分子长度大于 1 时报错的问题;函数性能优化
tukeywin 函数性能优化
grpdelay 支持复数的传递函数输入;函数性能优化
fvtool 功能重做,新增输入采样频率、响应点数等功能
resample 修复命名域冲突问题
firpmord 函数优化
db 添加用法

# DSP 系统工具箱

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

函数名 函数变更说明
fvtool 函数优化

# 通信工具箱

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

函数名 函数变更说明
bercoding 修复编码类型为 block 并使用硬判决,调制参数输入报错的问题
comm_PNSequence 函数优化
comm_GoldSequence 函数优化
vitdec 函数优化
biterr 函数优化

# 射频工具箱

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

函数名 函数说明
y2s 将 Y 参数转换为 S 参数
y2z 将 Y 参数转换为 Z 参数
s2y 将 S 参数转换为 Y 参数
rfparam 提取网络参数向量

# 相控阵工具箱

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

函数名 函数变更说明
phased_Collector 窄带信号采集器:类型稳定,函数用法不变,提高效率
phased_ReceiverPreamp 接收器前置放大器:类型稳定,函数用法不变,提高效率
phased_SteeringVector 传感器阵列导向向量:类型稳定,函数用法不变,提高效率
phased_MonopulseEstimator 振幅单脉冲测向:类型稳定,函数用法不变,提高效率
phased_MatchedFilter 匹配滤波器:类型稳定,函数用法不变,提高效率
phased_FMCWWaveform FMCW 波形:类型稳定,函数用法不变,提高效率

# 控制系统工具箱

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

函数名 函数变更说明
rlocus 新增入参检查,完善 fig=false 情况下的报错信息
pzgrid txt=false 情况下适配图形库更改
tf 新增入参检查,完善报错信息;持根据数据格式设置进行终端显示
zpk 新增入参检查,完善报错信息
ss 新增入参检查,完善报错信息;支持根据数据格式设置进行终端显示
frd 新增入参检查,完善报错信息
filt 新增入参检查,完善报错信息
dss 新增入参检查,完善报错信息
pid 新增入参检查,完善报错信息
pidstd 新增入参检查,完善报错信息
pid2 新增入参检查,完善报错信息
pidstd2 新增入参检查,完善报错信息
rss 新增入参检查,完善报错信息
drss 新增入参检查,完善报错信息
tunableTF 新增入参检查,完善报错信息
tunableSS 新增入参检查,完善报错信息
tunableGain 新增入参检查,完善报错信息
tunablePID 新增入参检查,完善报错信息
tunablePID2 新增入参检查,完善报错信息
realp 新增入参检查,完善报错信息
genmat 新增入参检查,完善报错信息
genss 新增入参检查,完善报错信息
genfrd 新增入参检查,完善报错信息
nblocks 新增入参检查,完善报错信息
balreal 新增入参检查,完善报错信息
canon 新增入参检查,完善报错信息
ss2ss 新增入参检查,完善报错信息
pade 新增入参检查,完善报错信息
exp 新增入参检查,完善报错信息
stack 新增入参检查,完善报错信息
nmodels 新增入参检查,完善报错信息
repsys 新增入参检查,完善报错信息
tfdata 新增入参检查,完善报错信息
zpkdata 新增入参检查,完善报错信息;调整判断零点是否为有限零点的容差,支持根据数据格式设置进行终端显示
ssdata 新增入参检查,完善报错信息
frdata 新增入参检查,完善报错信息
piddata 新增入参检查,完善报错信息
pidstddata 新增入参检查,完善报错信息
piddata2 新增入参检查,完善报错信息
pidstddata2 新增入参检查,完善报错信息
dssdata 新增入参检查,完善报错信息
chgFreqUnit 新增入参检查,完善报错信息
isct 新增入参检查,完善报错信息
isdt 新增入参检查,完善报错信息
isempty 新增入参检查,完善报错信息
isfinite 新增入参检查,完善报错信息
isproper 新增入参检查,完善报错信息
isreal 新增入参检查,完善报错信息
issiso 新增入参检查,完善报错信息
isstable 新增入参检查,完善报错信息
isstatic 新增入参检查,完善报错信息
order 新增入参检查,完善报错信息
ndims 新增入参检查,完善报错信息
size 新增入参检查,完善报错信息
markov 新增入参检查,完善报错信息
frdfun 新增入参检查,完善报错信息
feedback 新增入参检查,完善报错信息
connect 新增入参检查,完善报错信息
series 新增入参检查,完善报错信息
parallel 新增入参检查,完善报错信息
append 新增入参检查,完善报错信息
blkdiag 新增入参检查,完善报错信息
inv 新增入参检查,完善报错信息
ctranspose 新增入参检查,完善报错信息
lft 新增入参检查,完善报错信息
conj 新增入参检查,完善报错信息
fcat 新增入参检查,完善报错信息
fdel 新增入参检查,完善报错信息
fselect 新增入参检查,完善报错信息
abs 新增入参检查,完善报错信息
strseq 新增入参检查,完善报错信息
make1DOF 新增入参检查,完善报错信息
make2DOF 新增入参检查,完善报错信息
c2d 新增入参检查,完善报错信息
d2c 新增入参检查,完善报错信息
d2d 新增入参检查,完善报错信息
upsample 新增入参检查,完善报错信息
minreal 新增入参检查,完善报错信息
sminreal 新增入参检查,完善报错信息
modred 新增入参检查,完善报错信息
balred 新增入参检查,完善报错信息
modsep 新增入参检查,完善报错信息
stabsep 新增入参检查,完善报错信息
freqsep 新增入参检查,完善报错信息
step 新增入参检查,完善报错信息;添加图形数据提示
stepdata 新增入参检查,完善报错信息
stepinfo 新增入参检查,完善报错信息
impulse 新增入参检查,完善报错信息;添加图形数据提示
impulsedata 新增入参检查,完善报错信息
initial 新增入参检查,完善报错信息;添加图形数据提示
initialdata 新增入参检查,完善报错信息
lsim 新增入参检查,完善报错信息;添加图形数据提示
lsimdata 新增入参检查,完善报错信息
gensig 新增入参检查,完善报错信息
covar 新增入参检查,完善报错信息
RespConfig 新增入参检查,完善报错信息
bode 新增入参检查,完善报错信息;添加图形数据提示
bodedata 新增入参检查,完善报错信息
bodemag 新增入参检查,完善报错信息
nyquist 新增入参检查,完善报错信息;添加图形数据提示
nyquistdata 新增入参检查,完善报错信息
nichols 新增入参检查,完善报错信息;添加图形数据提示
nicholsdata 新增入参检查,完善报错信息
sigma 新增入参检查,完善报错信息;添加图形数据提示
sigmadata 新增入参检查,完善报错信息
rga 新增入参检查,完善报错信息
freqresp 新增入参检查,完善报错信息
evalfr 新增入参检查,完善报错信息
dcgain 新增入参检查,完善报错信息
bandwidth 新增入参检查,完善报错信息
getPeakGain 新增入参检查,完善报错信息
fnorm 新增入参检查,完善报错信息
db2mag 新增入参检查,完善报错信息
mag2db 新增入参检查,完善报错信息
pole 新增入参检查,完善报错信息
syszero 新增入参检查,完善报错信息;调整判断零点是否为有限零点的容差
damp 新增入参检查,完善报错信息
dsort 新增入参检查,完善报错信息
esort 新增入参检查,完善报错信息
tzero 新增入参检查,完善报错信息
pzmap 新增入参检查,完善报错信息
pzmapdata 新增入参检查,完善报错信息
iopzmap 新增入参检查,完善报错信息
sgrid 新增入参检查,完善报错信息
zgrid 新增入参检查,完善报错信息
allmargin 新增入参检查,完善报错信息
margin 新增入参检查,完善报错信息
margindata 新增入参检查,完善报错信息
impulseplot 新增入参检查,完善报错信息;添加图形数据提示
initialplot 新增入参检查,完善报错信息;添加图形数据提示
lsimplot 新增入参检查,完善报错信息
stepplot 新增入参检查,完善报错信息;添加图形数据提示
bodeplot 新增入参检查,完善报错信息;添加图形数据提示
nicholsplot 新增入参检查,完善报错信息;添加图形数据提示
nyquistplot 新增入参检查,完善报错信息;添加图形数据提示
sigmaplot 新增入参检查,完善报错信息;添加图形数据提示
rgaplot 新增入参检查,完善报错信息
pzplot 新增入参检查,完善报错信息
iopzplot 新增入参检查,完善报错信息
bodeoptions 新增入参检查,完善报错信息
nicholsoptions 新增入参检查,完善报错信息
nyquistoptions 新增入参检查,完善报错信息
pzoptions 新增入参检查,完善报错信息
sigmaoptions 新增入参检查,完善报错信息
timeoptions 新增入参检查,完善报错信息
setoptions 新增入参检查,完善报错信息
getoptions 新增入参检查,完善报错信息
nicholsgrid 新增入参检查,完善报错信息
pidtune 新增入参检查,完善报错信息
domainConvert 新增入参检查,完善报错信息
rlocusplot 新增入参检查,完善报错信息
loopshapingPID 新增入参检查,完善报错信息
placePI 新增入参检查,完善报错信息
stabregionPID 新增入参检查,完善报错信息
lqr 新增入参检查,完善报错信息
lqg 新增入参检查,完善报错信息
acker 新增入参检查,完善报错信息
estim 新增入参检查,完善报错信息
place 新增入参检查,完善报错信息
reg 新增入参检查,完善报错信息
kalman 新增入参检查,完善报错信息
clyap 新增入参检查,完善报错信息
lyapchol 新增入参检查,完善报错信息
dlyap 新增入参检查,完善报错信息
dlyapchol 新增入参检查,完善报错信息
icare 新增入参检查,完善报错信息
idare 新增入参检查,完善报错信息
ctrb 新增入参检查,完善报错信息
obsv 新增入参检查,完善报错信息
ctrbf 新增入参检查,完善报错信息
obsvf 新增入参检查,完善报错信息
gram 新增入参检查,完善报错信息
norm 新增入参检查,完善报错信息

# 系统辨识工具箱

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

函数名 函数变更说明
idtf 支持创建 MIMO 模型

# 鲁棒控制工具箱

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

函数名 函数变更说明
modreal 内部矩阵分块算法优化
slowfast 内部矩阵分块算法优化
Ltrsyn 优化绘图显示

# 图像处理工具箱

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

函数名 函数变更说明
cmpermute 修复使用颜色图矩阵,重新排序时的 bug
im2col 修复 "distinct" 方法时,可能报错的 bug
pcread 读取 .pcd 格式文件时,函数功能优化
imread 优化 online 环境报错提示
bwlabel 移除无效的报错提示
cmpermute 修复转 UInt8 时的越界 bug

# 深度学习工具箱

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

函数名 函数变更说明
trainNetwork 增加入参检测
mapminmax 支持输入矩阵为空

# 函数功能优化

  1. 基础数学 griddata 函数下 linear、cubic 算法精度优化;
    • griddata 精度优化。
      • cubic 插值底层算法重构,用户数据和常规数据与对标软件完全一致;
      • linear 插值底层算法重构,除查询点在顶点边界上内外插处理方式与对标软件不同外,其余完全一致。
  2. 控制系统工具箱。
    • 时频域绘图支持数据提示。

# 函数性能优化

  • 绘图

    云化绘图性能优化:云化绘图的性能得到改进,尤其在循环绘图的场景。例如,以下代码 2w 数据循环绘图 100 次。该代码的执行速度比上一版本大约快 100 倍。

    using TyPlot
    
    @time begin
        iterations = 1000
        last1 = 100
        n = 20000
        r = collect(LinRange(2.5, 4.0, n))
        x = 0.2 * ones(n)
    
        figure()
        hold("on")
        for i in 0:999
            global x, r
            x = r .* x .* (1 .- x)
            if i >= iterations - last1
                plot(r,x)
            end
        end
    end
    

    大致执行时间是:
    R2025b SP1:35s
    R2025b SP2:0.36s

    此代码是运行在 Ubuntu 20.04.6 LTS 的 8 核 Intel(R) Xeon(R) Gold 5220 CPU @ 2.20GHz 云化测试系统上,使用 Julia @time 宏进行进行计时。

  • 数学、统计与优化

    • gevlike:计算数据的 GEV 负对数似然值性能得到了改进;

      • 示例 1:计算参数为 [0.5, 0.5, 0.5] 时,数据 a 的 GEV 负对数似然值比上一版本约快 3 倍;

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 20000000);
        gevlike([0.5, 0.5, 0.5], a);
        

        大致的执行时间是:
        R2025b SP1:1.05511s
        R2025b SP2:0.369914s

      • 示例 2:计算参数为 [0.4, 0.4, 0.4] 时,数据 a 的 GEV 负对数似然值比上一版本约快 3 倍;

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 20000000);
        gevlike([0.4, 0.4, 0.4], a);
        

        大致的执行时间是:
        R2025b SP1:1.0574s
        R2025b SP2:0.359736s

      • 示例 3:计算参数为 [0.6, 0.6, 0.6] 时,数据 a 的 GEV 负对数似然值比上一版本约快 3 倍。

        using TyMath
        using TyStatistics
        rng = MT19937ar(5489)
        a = rand(rng, 20000000);
        gevlike([0.6, 0.6, 0.6], a);
        

        大致的执行时间是:
        R2025b SP1:1.07423s
        R2025b SP2:0.373797s

    • patternsearch:使用 s 模式搜索寻找函数最小值;

      • 对于 2 维边界约束问题的模式搜索提升 7 倍左右,示例如下:

        using TyMath
        using TyGlobalOptimization
        
        func = x -> exp(-x[1]^2 - x[2]^2) * (1 + 5 * x[1] + 6 * x[2] + 12 * x[1] * cos(x[2]))
        lb = [0, -Inf]
        ub = [Inf, -3]
        x0 = [1, -5]
        nvars = 2
        
        for i in 1:100000
            best_x, best_y, output = patternsearch(func, nvars, x0, lb, ub)
        end
        

        大概的执行时间是:
        R2025b SP1:0.2870s
        R2025b SP2:0.0441s

      • 对于边界约束问题的模式搜索提升 600 倍左右,示例如下:

        using TyMath
        using TyGlobalOptimization
        func = x -> exp(-x[1]^2 - x[end]^2) * (1 + 5 * x[1] + 6 * x[end] + 12 * x[1] * cos(x[end]))
        lb = -10 * ones(1000)
        ub = 10 * ones(1000)
        x0 = zeros(1000)
        nvars = 1000
        
        for i in 1:3
            best_x, best_y, output = patternsearch(func, nvars, x0, lb, ub)
        end
        

        大概的执行时间是:
        R2025b SP1:0.2228s
        R2025b SP2:0.0008s

    • griddata (对二维或三维散点数据):改进了二维情况下 natural 方法的性能;对“cubic”、“linear”插值方法的底层算法进行变更,“linear”插值方法除查询点在顶点边界上内处理方式与对标软件不同外,其余完全一致。

      在处理二维情况下,采用 natural 方法的插值性能得到了改进,例如,以下代码对于长度为 500 的样本点 61*61 的查询点求解 natural 方法下的插值,执行速度比上一个版本大约快 50 倍。

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

      大概的执行时间是:
      R2025b SP1:0.2050s
      R2025b SP2:0.0046s

      作为另外一个示例,代码的执行速度比上一个版本大约快 223 倍。

      using TyMath
      using TyBase
      rng = MT19937ar(5489)
      x = -2.5 .+ 5 * rand(rng, 500);
      y = -2.5 .+ 5 * rand(rng, 500);
      v = x .* exp.(-x .^ 2 - y .^ 2);
      tq = LinRange(3 / 4 * pi + 0.2, 2 * pi - 0.2, 150)
      xq = [2.8 * cos.(tq); 1.7 * cos.(tq); cos.(tq)]
      yq = [2.8 * sin.(tq); 1.7 * sin.(tq); sin.(tq)]
      near = "natural"
      
      z1 = griddata(x, y, v, xq, yq, near);
      

      大概的执行时间是:
      R2025b SP1:0.4924s
      R2025b SP2:0.0022s

      此代码是使用 julia 的 @elapsed、@belapsed 综合得出。

      “cubic”插值方法计算精度与竞品软件一致;且计算性能得到了提升,示例如下:

      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);
      z1 = griddata(x, y, v, xq, yq, "cubic")
      

      大致的执行时间是:
      R2025b SP1: 228.91 秒
      R2025b SP2: 5.33 秒

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

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

      使用“spline”、“linear”、“pchip”插值方法进行计算时性能得到了改进,如对于“spline”插值方法,示例如下:

      using TyMath
      using TyBase
      x = 1:1000;
      y = sin.(x);
      xi = LinRange(1, 1000, 134217728);
      yi = interp1(x, y, xi, "spline");
      

      大致的执行时间是:
      R2025b SP1: 1.28 秒
      R2025b SP2: 0.33 秒

      对于“linear”插值方法,示例如下:

      using TyMath
      using TyBase
      x = 1:1000;
      y = sin.(x);
      xi = LinRange(1, 1000, 134217728);
      yi = interp1(x, y, xi, "linear");
      

      大致的执行时间是:
      R2025b SP1: 0.72 秒
      R2025b SP2: 0.48 秒

      对于“pchip”插值方法,示例如下:

      using TyMath
      using TyBase
      x = 1:1000;
      y = sin.(x);
      xi = LinRange(1, 1000, 134217728);
      yi = interp1(x, y, xi, "pchip");
      

      大致的执行时间是:
      R2025b SP1: 1 秒
      R2025b SP2: 0.35 秒

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

  • 信号处理工具箱

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

      using TySignalProcessing
      b, a = ellip(6, 3, 50, 300 / 500)
      fvtool(b, a)
      

      大致的执行时间是:
      R2025b SP1: 0.078 s
      R2025b SP2: 0.035 s

    • firpmord:优化了 firpmord 函数内部的矩阵运算和内存分配;

      using TySignalProcessing
      a = [1500 2000]
      b = [1 0]
      c = [0.001 0.01]
      firpmord(a, b, c, 8000)
      

      大致的执行时间是:
      R2025b SP1: 1.490 μs
      R2025b SP2: 339.3 ns

    • vitdec:优化了 vitdec 内部的内存分配;

      using TyCommunication
      using TyMath
      rng = MT19937ar(1234)
      t = poly2trellis(3, [6 7])
      data = rand(rng, 0:1, 70)
      codedData, = convenc(data, t)
      tbdepth = 34
      vitdec(codedData, t, tbdepth, "trunc", "hard")
      

      大致的执行时间是:
      R2025b SP1: 9.900 μs
      R2025b SP2: 6.133 μs

    • biterr:重做了 biterr 的算法,性能有较大提升;

      using TyCommunication
      using TyMath
      rng = MT19937ar(1234)
      x = randi(rng, [0, 1], 1000)
      y = randi(rng, [0, 1], 1000)
      z = biterr(x, y)
      

      大致的执行时间是:
      R2025b SP1: 158.8 μs
      R2025b SP2: 5.025 μs

    • comm_PNSequence:优化了内部运算;

      using TyCommunication
      pnSequence = comm_PNSequence(Polynomial=[1 0 0 1 0 1], SamplesPerFrame=31, InitialConditions=[0 0 0 0 1])
      step(pnSequence);
      

      大致的执行时间是:
      R2025b SP1: 2.110 μs
      R2025b SP2: 493.4 ns

    • comm_GoldSequence:优化了内部运算。

      using TyCommunication
      gs = comm_GoldSequence(FirstPolynomial=[1 0 0 1 0 1],
      SecondPolynomial=[1 1 1 1 0 1],
      FirstInitialConditions=[0 0 0 0 1],
      SecondInitialConditions=[0 0 0 0 1],
      Index=4, SamplesPerFrame=10, OutputDataType=Int64)
      step(gs)
      

      大致的执行时间是:
      R2025b SP1: 2.833 μs
      R2025b SP2: 1.330 μs

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

    • tf2zpk:优化了 tf2zpk 函数的首次运行时间;

      using TySignalProcessing
      b = [2 3 0]
      a = [1 0.4 1]
      b, a = eqtflength(b, a)
      @time z, p, k = tf2zpk(b, a)
      

      大致的执行时间是:
      R2025b SP1: 0.433 秒
      R2025b SP2: 0.288 秒

    • filtic:优化了 filtic 函数中的内存分配;

      using TySignalProcessing
      b, a = butter(200, 0.6)
      Y = 1
      @benchmark filtic(b, a, Y)
      

      大致的执行时间是:
      R2025b SP1: 11.90 微秒
      R2025b SP2: 3.44 微秒

    • zp2tf:优化了 zp2tf 函数的执行效率;

      using TySignalProcessing
      using TyBase
      w = logspace(-1, 1)
      z, p, k = besselap(6)
      @benchmark num, den = zp2tf(z, p, k)
      

      大致的执行时间是:
      R2025b SP1: 774.242 纳秒
      R2025b SP2: 145.755 纳秒

    • tf2sos:优化了 tf2sos 函数的首次执行时间;

      using TySignalProcessing
      nm, dn = butter(4, 0.5)
      @time sn, gn = tf2sos(nm, dn)
      

      大致的执行时间是:
      R2025b SP1: 1.355 秒
      R2025b SP2: 1.038 秒

    • eqtflength:优化了 eqtflength 函数的内存分配;

      using TySignalProcessing
      num = [0.0 0 2]
      den = [4.0 0 3 -1]
      @time b, a, n, m = eqtflength(num, den)
      

      大致的执行时间是:
      R2025b SP1: 195.658 纳秒
      R2025b SP2: 141.622 纳秒

    • grpdelay:优化了 grpdelay 函数的首次执行时间;

      using TySignalProcessing
      z, p, k = butter(6, 0.2, "lowpass"; otype="zpk")
      sos = zp2sos(z, p, k; g_flag=false)
      @time grpdelay(sos, 128)
      

      大致的执行时间是:
      R2025b SP1: 5.402189 秒
      R2025b SP2: 1.898401 秒

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

# M 兼容新增函数

M 兼容新增函数 40 个,当前函数总数为 1981 个,提供 1030 个 M 函数帮助文档。

函数名 函数说明
colamd 列近似最小度排列
speye 稀疏单位矩阵
polyshape 二维多边形形状
addboundary 添加 polyshape 边界
boundary polyshape 边界的顶点坐标
rotate 旋转 polyshape
scale 缩放 polyshape
ishole 确定 polyshape 边界是否为孔
isinterior polyshape 内的查询点
issimplified 确定 polyshape 是否明确定义
numboundaries polyshape 的边界数
numsides polyshape 的边数
plot 绘制 polyshape
area polyshape 的面积
boundingbox polyshape 的边界框
centroid polyshape 的矩心
perimeter polyshape 的周长
intersect polyshape 对象的交集
innerjoin 两个表或时间表之间的内联
outerjoin 两个表或时间表之间的外联
standardizeMissing 插入标准缺失值
rmmissing 删除缺失的条目
real 复数的实部
imag 复数的虚部
iztrans Z 逆变换
abcd2y 将 ABCD 参数转换为 Y 参数
y2abcd 将 Y 参数转换为 ABCD 参数
idtf 具有可辨识系数传递函数辨识模型
inputdlg 创建收集用户输入的对话框
varfun 向表或时间表变量应用函数
rowfun 将函数应用于表或时间表行
findgroups 查找组并返回组编号
splitapply 将数据划分归组并应用函数
groupsummary 组汇总计算
mapminmax 通过将行最小值和最大值映射到 [-1 1] 来处理矩阵
binopdf 二项概率密度函数
normplot 正态概率图
mlang(Windows/Linux) 从 Windows/Linux 系统提示符启动 MLang 程序
timeseries 创建 timeseries 对象
resample 对 timeseries 时间向量重采样

# 科学计算 APP

曲线拟合 APP

修改绘制曲面的采样逻辑、等高线图的层级规则。曲面、等高线颜色映射修改至与 TyPlot 保持一致。