当我有图表时,我有一个简单的情节,其中包含许多数据点。有没有办法让我可以简单点击所有这些点并让matlab给我一个平均值?
谢谢
答案 0 :(得分:2)
另一种选择是使用data brush。
单击图工具栏上的画笔图标并进行选择。然后在菜单Tools-Brushing-Create new variable中选择。您可以保留默认变量名称ans
。此变量将包含所有选定点的X和Y坐标。然后运行mean(ans(:,2))
以获得Y的平均值。
答案 1 :(得分:1)
如果您不想以编程方式执行此操作,最简单的方法是使用数据画笔和统计信息。
我使用plot(rand(1,200))
生成我的数据。绘制完成后,转到工具>数据统计。 Y-mean就是你要找的。 p>
alt text http://www.thinkextensively.com/misc/stackoverflow/images/matlab2.png
要获取特定数据集的平均值,请选择所需数据,然后在菜单中转到工具>刷牙>创建新变量。 。 ..这会创建一个包含盒装数据的变量。得到平均值mean(ans)
。向量中的第二个值是Y均值。
alt text http://www.thinkextensively.com/misc/stackoverflow/images/matlab1.png
答案 2 :(得分:0)
您想要计算的值的平均值不是很清楚。我假设,它是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文档。
答案 3 :(得分:0)
我想你想要从已绘制的数据中绘制平均值(或至少计算它)。
使用plotAverage中的Matlab File Exchange,您可以轻松完成。
%# 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.