You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成与绘制不同位置和宽度bspline矩阵的实现方法咨询

多尺度B样条矩阵生成及绘图方案

实现逻辑

  • 总区间固定为[1950, 20150],所有样条统一采用3次(4阶)B样条,幅值固定为1
  • 最细层级的样条覆盖4个基础knot间隔,相邻样条横向偏移1个基础knot,直到样条右端触及区间右边界
  • 完成当前层级排布后,样条宽度翻倍,回到区间左边界重新按间隔1个基础knot的规则排布
  • 循环扩展层级,直到当前层级单条样条的宽度足以覆盖整个总区间为止

适配代码(MATLAB)

可直接基于参考代码中的spcol函数扩展实现,示例代码如下:

% 基础参数配置
x_start = 1950;
x_end = 20150;
order = 4; % 对应3次B样条
base_knot_count = 20; % 最细层级基础knot数量,可按需调整
eval_point_count = 1000; % 采样点数量,数值越高绘图越平滑

% 生成归一化坐标和基础knot
x_norm = linspace(0,1,eval_point_count);
% 初始化多尺度样条矩阵
B_multi = [];

% 逐层生成不同宽度的B样条
current_scale = 1;
while current_scale*(order-1)/base_knot_count < 1
    % 生成当前尺度的knot序列
    scale_knots = unique(linspace(0,1,round(base_knot_count/current_scale)+1));
    scale_knots = [zeros(1,order-1), scale_knots, ones(1,order-1)];
    % 生成当前尺度所有B样条
    B_scale = spcol(scale_knots, order, x_norm);
    B_multi = [B_multi, B_scale];
    current_scale = current_scale*2;
end

% 坐标映射回实际区间
x_actual = x_norm*(x_end - x_start) + x_start;

绘图方法

直接使用plot函数绘制生成的矩阵即可得到符合要求的堆叠效果,调用逻辑和你的参考代码完全一致:

plot(x_actual, B_multi);
xlabel('区间值')
ylabel('样条幅值')

附图说明

  • 附图1(当前实现效果):对应单尺度下的B样条排布效果
  • 附图2(样条示例):对应3次B样条的基础形态

内容的提问来源于stack exchange,提问作者SysEng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 15:15:04