Получение среднего значения из графика Matlab?

У меня есть простой график, на котором много точек данных, когда у меня есть график. Есть ли способ, которым я могу просто щелкнуть по всем этим точкам и позволить Matlab дать мне их среднее значение?

Спасибо


person lytheone    schedule 31.03.2010    source источник
comment
Если вы хотите получить лучший ответ, пожалуйста, предоставьте пример ваших данных, как вы их рисуете и среднее значение, которое вы хотите рассчитать.   -  person yuk    schedule 01.04.2010
comment
Я предполагаю, что он пытается сделать это по сюжету. Так что нет, Matlab не может сделать это на сюжете.   -  person Pyrolistical    schedule 01.04.2010


Ответы (4)


Самый простой способ, если вы не хотите делать это программно, — использовать кисть данных и статистику.

Я использовал plot(rand(1,200)) для генерации своих данных. После того, как он будет построен, перейдите в «Инструменты»> «Статистика данных». Y-значение - это то, что вы ищете.

http://www.thinkextensively.com/misc/stackoverflow/images/matlab2.png

Чтобы получить среднее значение определенного набора данных, выберите нужные данные, а затем в меню выберите «Инструменты» > «Очистка» > «Создать новую переменную». . .. Это создает переменную, содержащую упакованные данные. Чтобы получить среднее значение, выполните mean(ans). Второе значение в векторе — это среднее значение Y. http://www.thinkextensively.com/misc/stackoverflow/images/matlab1.png

person Jay    schedule 01.04.2010
comment
Если я правильно помню, вам даже не нужно сначала чистить зубы. Вы можете перейти непосредственно в Инструменты->Статистика данных и получить статистику для всего графика. - person mtrw; 01.04.2010
comment
Вы абсолютно правы... чистка на самом деле не влияет на статистику данных. - person Jay; 01.04.2010

Другой вариант — использовать кисть данных.

Щелкните значок кисти на панели инструментов фигуры и сделайте выбор. Затем выберите в меню Tools-Brushing-Create new variable. Вы можете оставить имя переменной по умолчанию ans. Эта переменная будет содержать координаты X и Y всех выбранных точек. Затем просто запустите mean(ans(:,2)), чтобы получить среднее значение Ys.

person yuk    schedule 01.04.2010
comment
Я думаю, вы хотите сказать «кисть». - person Jonas; 01.04.2010

Не очень четкое среднее значение, которое вы хотели рассчитать. Я предполагаю, что это 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.

person yuk    schedule 01.04.2010

Я предполагаю, что вы хотите построить среднее значение (или, по крайней мере, рассчитать его) из уже нанесенных данных.

С 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.
person Jonas    schedule 01.04.2010