グラフがある場合、多くのデータポイントを特徴とする単純なプロットがあります。これらすべてのポイントをクリックするだけで、matlab がそれらの平均値を取得できるようにする方法はありますか?
ありがとうございました
もう 1 つのオプションは、データ ブラシを使用することです。
Figure ツールバーのブラシ アイコンをクリックし、選択を行います。次に、メニューの [ツール] - [ブラッシング] - [新しい変数の作成] を選択します。デフォルトの変数名のままにすることができますans。この変数には、選択したすべての点の X 座標と Y 座標が含まれます。次に、実行mean(ans(:,2))して Ys の平均を取得します。
プログラムで実行したくない場合の最も簡単な方法は、データ ブラシと統計を使用することです。
以前plot(rand(1,200))は自分のデータを生成していました。プロットしたら、[ツール] > [データ統計] に移動します。Y-平均はあなたが探しているものです。
代替テキスト http://www.thinkextensively.com/misc/stackoverflow/images/matlab2.png
特定のデータ セットの平均を取得するには、目的のデータを選択し、メニューで [ツール] > [ブラッシング] > [新しい変数の作成] に移動します。. .. これにより、ボックス化されたデータを含む変数が作成されます。平均を取得するにはmean(ans). ベクトルの 2 番目の値は 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.