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

如何在Matlab R2020b中彻底删除元胞数组的<missing>值?

解决Matlab元胞数组删除missing值的问题

问题分析

你之前的代码仅将包含missing的元胞内容替换为空数组,但未删除整个元胞元素,因此数组长度仍保持6,只是最后两个元胞变为空的0×0 double数组。要彻底清除缺失值,需要直接筛选保留非缺失值的元胞。

解决方案

方法1:直接用逻辑索引筛选(一行代码)

my_array = my_array(~cellfun(@ismissing, my_array));
  • cellfun(@ismissing, my_array):遍历元胞数组的每个元素,返回与原数组同维度的逻辑数组,对应missing的位置为true
  • ~:对逻辑数组取反,得到需要保留的元素索引(非missing的位置为true)
  • 通过索引筛选原数组,直接得到4×1的目标元胞数组

方法2:修改cleanup函数

将你的函数修改为直接删除对应元胞元素:

function array = cleanup(array)
    % 生成保留元素的逻辑索引
    keep_indices = ~cellfun(@ismissing, array);
    % 筛选并重新赋值数组
    array = array(keep_indices);
end

调用该函数后,my_array会直接变为4×1的元胞数组,仅保留非缺失值的元素。

验证效果

执行上述代码后,输出结果为:

my_array =

  4×1 cell array

    {'a'}
    {'b'}
    {'c'}
    {'d'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:12:06