# 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 函数帮助文档。
# 科学计算函数库
# 功能优化
基础工具箱
数学、统计和优化
信号处理和无线通信
控制系统
图像处理和计算机视觉
- 图像处理工具箱改进 6 个函数。
AI 与数据科学
- 深度学习工具箱改进 2 个函数。
函数功能优化:
- 基础数学 griddata 函数下 linear、cubic 算法精度优化;
- griddata 精度优化:
- cubic 插值底层算法重构,用户数据和常规数据与对标软件完全一致;
- linear 插值底层算法重构,除查询点在顶点边界上内外插处理方式与对标软件不同外,其余完全一致。
- griddata 精度优化:
- 控制系统工具箱。
- 时频域绘图支持数据提示。
- 基础数学 griddata 函数下 linear、cubic 算法精度优化;
# 性能优化
绘图
云化绘图性能优化:云化绘图的性能得到改进,尤其在循环绘图的场景。例如,以下代码 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 sfirpmord:优化了 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 nsvitdec:优化了 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 μsbiterr:重做了 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 μscomm_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 nscomm_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: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
-
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 | 支持输入矩阵为空 |
# 函数功能优化
- 基础数学 griddata 函数下 linear、cubic 算法精度优化;
- griddata 精度优化。
- cubic 插值底层算法重构,用户数据和常规数据与对标软件完全一致;
- linear 插值底层算法重构,除查询点在顶点边界上内外插处理方式与对标软件不同外,其余完全一致。
- griddata 精度优化。
- 控制系统工具箱。
- 时频域绘图支持数据提示。
# 函数性能优化
绘图
云化绘图性能优化:云化绘图的性能得到改进,尤其在循环绘图的场景。例如,以下代码 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 sfirpmord:优化了 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 nsvitdec:优化了 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 μsbiterr:重做了 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 μscomm_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 nscomm_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 保持一致。