我有一个测量的二维数据,如下所示:
噪声导致Y数据在[4.03,4.1]范围内。如何获得每组点的平均值(x,y),例如对于图形,这将是(0.3,4.07),(1.6,4.08),(2.3,4.05),(3,4.07)?
我看到了一些关于nlfilter的内容,但大多数关于它的例子代表了一个二维图像。谢谢你的帮助!
编辑:
我生成下面的图:
plot(t, y);
t数据显示为:
t(some_condition(1:40))
ans =
1.0e-04 *
Columns 1 through 6
0.0216 0.0216 0.0216 0.0216 0.0216 0.0217
Columns 7 through 12
0.0217 0.0217 0.0217 0.0217 0.0218 0.0928
Columns 13 through 18
0.0928 0.0928 0.0928
>> mean(t(some_condition))
ans =
1.6686e-05
所以,我只得到t中的平均值,而我想要4个均值(实际上,2个点大约为0.8)也是噪音。
答案 0 :(得分:2)
您可以尝试以下操作:
x_filter = [0.03 0.16 0.23 0.30]*1e-5; % Insert value you want to filter here and exluce those which not
for i = 1:numel(x_filter)
ind = abs(t-x_filter(i))<0.01e-5; % Or any other offset
x_m = mean(t(ind));
y_m = mean(y(ind));
plot(x_m,y_m,'x','MarkerSize',20);
end
答案 1 :(得分:1)
在MATLAB中,均值函数按列操作,因此使用mean(ydata)会给出一个包含每个x位置均值的数组。如果我说得对,这里有一个示例代码,它可以完成您的工作(我认为):
clear
clc
%// Generate dummy data
x = repmat(1:4,10,1);
y = rand(10,4);
My = mean(y)
我看起来像这样:
My =
0.5854 0.6799 0.5431 0.2933
然后使用scatter绘制点:
hold on
for k = 1:size(y,2)
scatter(x(:,k),y(:,k))
markerarea = 200;
scatter(k,My(k),markerarea,'filled','d') %// Represent the mean as a diamond.
end
hold off
axis([0 5 0 1])
看起来像这样:
这是你的想法吗?如果没有,请告诉我,我将编辑/删除我的答案:)