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

如何合并函数ABC返回的含前置零列向量得到目标连续列向量?

解决方案:累积提取有效向量并拼接

这问题本质就是要持久化保存每次调用的有效结果,再逐步拼接。结合你的例子,我给你两种适配不同场景的MATLAB实现方案:

方法一:固定提取最后3个元素(适配你的示例规律)

从你的描述看,ABC()每次返回的向量里,有效数据都是最后3个重复值,前面补0。那直接提取最后3个元素拼接就行:

% 初始化空的累积向量,用来存最终结果
accumulated_vec = [];

% 第一次调用函数并更新累积向量
current_vec = ABC(...); % 得到 [1;1;1]
accumulated_vec = [accumulated_vec; current_vec(end-2:end)]; % 此时结果是 [1;1;1]

% 第二次调用
current_vec = ABC(...); % 得到 [0;0;0;2;2;2]
accumulated_vec = [accumulated_vec; current_vec(end-2:end)]; % 结果变为 [1;1;1;2;2;2]

% 第三次调用
current_vec = ABC(...); % 得到 [0;0;0;0;0;0;3;3;3]
accumulated_vec = [accumulated_vec; current_vec(end-2:end)]; % 最终结果 [1;1;1;2;2;2;3;3;3]

如果需要调用多次,直接套循环就行:

accumulated_vec = [];
call_times = 3; % 你要调用的次数
for i = 1:call_times
    current_vec = ABC(...);
    accumulated_vec = [accumulated_vec; current_vec(end-2:end)];
end

方法二:提取所有非零元素(通用场景)

如果以后ABC()返回的向量里,0的位置不固定,但有效数据都是非零值,用这种更灵活的方式:

accumulated_vec = [];

% 第一次调用
current_vec = ABC(...);
non_zero_part = current_vec(current_vec ~= 0); % 过滤出所有非零元素
accumulated_vec = [accumulated_vec; non_zero_part];

% 后续调用重复上面两步即可

这个方法不管0在什么位置,都能精准提取你需要的有效数值,兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:03:09