matlab - 根据 NaN 值切割向量

标签 matlab nan partition

data_test 是一个由带有 NaN 的数字填充的向量。

data_test = [NaN, 2, 3, 4, NaN,NaN,NaN, 12 ,44, 34, NaN,5,NaN];

我想根据 NaN 剪切 data_test 并创建一个包含 NaN 之间的 data_set 片段的元胞数组。

data_cell{1}=[2 3 4];
data_cell{2}=[12 44 34];
data_cell{3}=[5];

此时我需要过滤这些值(这没问题,只是作为示例,过滤后的值将与 data_test +1 相同)

data_cell{1} -> data_cell_filt{1}
data_cell{2} -> data_cell_filt{2}
data_cell{3} -> data_cell_filt{3}

并将过滤后的值放回data_test中。

data_cell_filt{1}
data_cell_filt{2} -> data_test
data_cell_filt{3}

为了 data_test 是

data_test = [NaN, 3, 4, 5, NaN,NaN,NaN, 13 ,45, 35, NaN, 6, NaN];

ps(我的例子中的 data_test 约为 20000 个元素)

最佳答案

您可以使用循环轻松完成此操作或使用arrayfun,如下所示:

A = [NaN, 2, 3, 4, NaN, NaN, NaN, 13, 45, 35, NaN, 6, NaN]

i1 = find(diff(isnan(A))==-1)+1  %// Index where clusters of numbers begin 
i2 = find(diff(isnan(A))==1)     %// Index where clusters of numbers end

data_cell_filt = arrayfun(@(x,y)({A(x:y)}),i1,i2 ,'uni', false)

关于matlab - 根据 NaN 值切割向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30807131/

相关文章:

c++ - 通过 C++ 或 VB.NET 集成 Matlab DLL

matlab - 当需要索引位置时,Matlab 中 ismember 的更快替代方案?

javascript - Reducer 从数组返回 NAN

python - 如何将具有缺失值的列转换为字符串?

python - 在 Pandas 中查找另一列具有 NAN 的一列行中的值总和

c++ - 如何存储 CUDA 内核函数的 bool 结果

matlab - MATLAB中的定时程序执行;奇怪的结果

matlab - 贝叶斯网络推理算法是否假设特定的数据分布?

java - K 个分区子数组之和的最大值

hadoop - 带分区的 sqoop 配置单元导入