2

大量のデータを分析する必要があります。そのために、データの分類子をいくつか定義しました。グラフ上のポイントをデータカーソルでクリックすると、そのポイントが保存され、次のポイントから差し引かれます。サインのピークからピークまでの高さを見つけることができるように。y2-y1 のように。

ポイントを抽出する次のコードを見つけました。ただ毎回呼び出される関数でメモリがありません。

function out = getIndex(obj,event_obj,X,Y)
pos = event_obj.Position;
d1 = (X-pos(1)).^2 + (Y-pos(2)).^2;
[ignore index] = min(d1);
out = {sprintf('X: %f',pos(1)),...
sprintf('Y: %f',pos(2)),...
sprintf('Index: %d',index)};
% disp(pos(1))
% pos(1)
pos(2)
save pos.mat pos

Matlab では、次の方法でテストできます。

X = 1:10;
Y = rand(1,10);
plot(X, Y)

以下を使用して、上記の関数を datacursormode で使用するように適用できます。

dcm = datacursormode(gcf);
set(dcm, 'UpdateFcn', @(x,y)getIndex(x,y,X,Y))
4

1 に答える 1

0

ここでは別の方法を使用することをお勧めします。データ カーソルのコールバックを設定する代わりに、プロットのコールバックを直接設定します。軸 'CurrentPoint' を照会して (X,Y) を抽出します。

関数 so2()
フィギュア();
a = 軸();
x = -10:0.01:10;
sx = 罪 (x);
h = プロット (x、sx);
set(h,'ButtonDownFcn',{@Click_CallBack a});

終わり

function Click_CallBack(h,e,a)
point = get(a,'CurrentPoint'); x = ポイント (1);
y = ポイント (4);
fprintf(1,'X,Y = %.2f,%.2f\n',x,y);
終わり

于 2011-12-20T16:19:47.393 に答える