我不确定这个过程对你的数据有多大的代表性,因为它取决于你的数据是什么样的,但你当然可以编写类似的代码。找到最接近的值的最简单方法是获取测试向量和所需值之间min
的abs
差异。
r = max(x)*rand(2000,1);
for i = 1:length(r)
[~,z(i)] = min(abs(x-r(i)));
end
plot(x(z),y(z),'.')
请注意,行[~,z(i)]
中的min
表示我们要将最小值的索引存储在 vector 中z
。
您也可以尝试移动平均线之类的方法,请参阅此视频:http: //blogs.mathworks.com/videos/2012/04/17/using-convolution-to-smooth-data-with-a-moving-average-在matlab/
或者你可以绘制每个n
点,比如(我没有测试过,所以不能保证):
n = 1000;
plot(x(1:n:end),y(1:n:end))
或者,如果您知道想要的点数(同样,未经测试):
npoints = 2000;
interval = round(length(x)/npoints);
plot(x(1:interval:end),y(1:interval:end))