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

如何基于两个向量定义的尺寸分配适配2D/3D的数组

适配2D/3D场景的零数组创建优化

需求说明

需要创建一个由向量定义尺寸的零数组,同时适配2D和3D场景,替代原有的条件判断分支,实现更简洁的维度自适应代码。

原有实现代码

原代码通过if-else分别处理2D和3D情况:

%% Setting in 2D
% rectangular domain with left bottom corner [_1,_2]
% and right top  corner [_1,_2]
lb_corner=[-1,-2]
rt_corner=[2,2]
domain_size=rt_corner - lb_corner; 
dim=size(domain_size,2);
nb_pixels=[5,4]; % number of pixels in [x_1,x_2]

%% Mesh parameters
pixel_size= domain_size./nb_pixels;

%% Coordinates
if dim == 2
    x_coords=zeros(nb_pixels(1),nb_pixels(2),dim);
elseif dim == 3
    x_coords=zeros(nb_pixels(1),nb_pixels(2),nb_pixels(3),dim);
end

3D场景的参数设置:

%% Setting in 3D
lb_corner = [-2,-2,-2]
rt_corner = [2,2,2] 
domain_size=rt_corner - lb_corner; 
dim=size(domain_size,2); 
nb_pixels=[5,4,5]; % number of pixels in [x_1,x_2,x_3] 

优化方案

直接将nb_pixels与dim拼接成一个维度向量,作为zeros函数的输入参数,即可自动适配2D/3D场景:

x_coords = zeros([nb_pixels, dim]);

原理说明

  • 2D场景下,nb_pixels为[5,4],dim=2,拼接后维度向量为[5,4,2],zeros会生成尺寸为5×4×2的数组,与原2D分支的输出一致。
  • 3D场景下,nb_pixels为[5,4,5],dim=3,拼接后维度向量为[5,4,5,3],zeros会生成尺寸为5×4×5×3的数组,与原3D分支的输出一致。

内容的提问来源于stack exchange,提问作者Martin Ladecký

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:20:18