我有一个数组,想把其中一些明显跳动的点去掉,现在我假设想去掉其中一些这样的点:如果这个数与它前面的数之差大于0.5,就去掉它!我编了下面简单的程序,不知道为什么不对,大家帮我看看呀!谢谢!
z=[1.23,1.35,1.46,3.26,1.53,2.86,1.59,1.63,2.95,1.8];
for li=1:length(z)
ii=find(z(li)-z(li-1)>=0.5)
z(ii)=[];
end
disp([z])
上面的数我想去掉的是:3.26,2.86,2.95
我改成如下:结果对,但我不想要NaN;应该怎么改呢,当我用[ ]的时候,好像破坏了矩阵,不知道怎么改,能帮我看看吗?
clear;
clc;
z=[1.23,1.35,1.46,3.26,1.53,2.86,1.59,1.63,2.95,1.8];
yd=diff(z);
aaa=[];
for i=1:length(yd)
if yd(i)>1
aaa=[aaa,i]; % 记录yd大于1的数的位置
else
if ~isempty(aaa) % 若存在yd大于1的情况,进行处理
z(aaa+1)=NaN;
end
end
end
display([z]);
z =
1.2300 1.3500 1.4600 NaN 1.5300 NaN 1.5900 1.6300 NaN 1.8000