MATLAB中如何跳过有些缺省值,MATLAB:使⽤插值替换缺 失值(NaN)
我有单元格数组,每个单元格包含⼀个值序列作为⾏向量.序列包含由NaN表⽰的⼀些缺失值. 我想⽤某种插值⽅法替换所有NaN,我怎样才能在MATLAB中做到这⼀点?我也对如何处理这些缺失值的其他建议持开放态度.
十二月党人seq = {randn(1,10); randn(1,7); randn(1,8)};
for i=1:numel(seq)
%# simulate some missing values
ind = rand( size(seq{i}) ) < 0.2;
seq{i}(ind) = nan;
end
结果序列:
seq{1}
ans =国家民委
-0.50782 -0.32058 NaN -3.0292 -0.45701 1.2424 NaN 0.93373 NaN -0.029006
seq{2}
泉州开发区实验学校ans =美丽痛苦之吻2
史学理论研究0.18245 -1.5651 -0.084539 1.6039 0.098348 0.041374 -0.73417
seq{3}
ans =
NaN NaN 0.42639 -0.37281 -0.23645 2.0237 -2.2584 2.2294
编辑:
根据回复,我认为存在⼀个混乱:显然我不使⽤随机数据,上⾯显⽰的代码只是数据结构的⼀个例⼦.
实际数据是某种形式的处理信号.问题是在分析过程中,如果序列包含缺失值,我的解决⽅案将会失败,因此需要进⾏过滤/插值(我已经考虑过使⽤每个序列的平均值来填充空⽩,但我希望有更强⼤的功能)
>psc