当我有图表时,我有一个简单的绘图,其中包含很多数据点。有没有一种方法可以让我简单地点击所有这些点并让 matlab 给我它们的平均值?
谢谢
另一种选择是使用数据刷。
单击图形工具栏上的画笔图标并进行选择。然后在菜单中选择Tools-Brushing-Create new variable。您可以保留默认变量名称ans
。此变量将包含所有选定点的 X 和 Y 坐标。然后运行mean(ans(:,2))
以获取 Ys 的平均值。
如果您不想以编程方式执行此操作,最简单的方法是使用数据刷和统计信息。
我曾经plot(rand(1,200))
生成我的数据。绘制完成后,转到工具 > 数据统计。Y-mean 是您正在寻找的。
替代文字 http://www.thinkextensively.com/misc/stackoverflow/images/matlab2.png
要获得一组特定数据的平均值,请选择所需的数据,然后在菜单中转到 Tools > Brushing > Create New Variable 。. .. 这将创建一个包含装箱数据的变量。取其意思做mean(ans)
。向量中的第二个值是 Y 均值。
替代文字 http://www.thinkextensively.com/misc/stackoverflow/images/matlab1.png
您想要计算的值的平均值不是很清楚。我假设,它是 y 坐标。
我会使用 RBBOX 函数来选择绘图上的一组点。
试试这个代码:
% sample data
data = rand(1,100);
datax = 1:numel(data);
% draw simple plot
plot(data,'.')
% select the points with mouse and get coordinates
k = waitforbuttonpress;
point1 = get(gca,'CurrentPoint'); % button down detected
finalRect = rbbox; % return figure units
point2 = get(gca,'CurrentPoint'); % button up detected
point1 = point1(1,1:2); % extract x and y
point2 = point2(1,1:2);
pmin = min(point1,point2);
pmax = max(point1,point2);
% find the data selected and get average of y values
idx = data >= pmin(2) & data <= pmax(2) & datax >=pmin(1) & datax <= pmax(1);
dataAverage = mean(data(idx));
我必须声称这段代码的大部分来自 rbbox 文档。
我猜你想从已经绘制的数据中绘制一个平均值(或至少计算它)。
使用Matlab File Exchange中的plotAverage,您可以很容易地做到这一点。
%# plot some data
figure
plot(randn(100,5))
%# add the average line at every 5th point
[plotHandles, average] = plotAverage([],5:5:95);
%# and you have a line on the plot, and its handles and data in the workspace.