Экспорт данных в увеличенной области графика MATLAB в рабочую область

У меня есть 4-5 подзаголовков данных временных рядов и графиков разброса в фигуре MATLAB, оси x которой связаны. Данные довольно длинные, и я увеличил небольшую часть рисунка. Теперь я хочу экспортировать только данные, содержащиеся в этой увеличенной части, в рабочее пространство в качестве переменных. Является ли это возможным?

Например, ниже приведен график для полного набора данных.

введите описание изображения здесь

Ниже приведена увеличенная часть.

введите описание изображения здесь

Теперь я хочу экспортировать все переменные или временную часть переменных, соответствующих приведенной выше увеличенной части, в рабочую область.


person Naveen    schedule 08.06.2015    source источник
comment
Конечно: получите пределы оси x с помощью get(gca, 'XLim') и соответствующим образом проиндексируйте свои массивы.   -  person Ratbert    schedule 09.06.2015


Ответы (1)


Основываясь на комментарии Ратберта, давайте создадим образец сюжета, чтобы поиграть с ним.

x = 1:10;
h.myfig = figure();
h.myaxes = axes('Parent', h.myfig);
h.myplot = plot(x);

Я предполагаю, что у вас есть MATLAB R2014b или новее, где MATLAB переключил графические дескрипторы на объекты. Если у вас более старая версия, вы можете поменять местами все мои записи с точками на _2 _ и вызовы set, где это необходимо.

Теперь с этим начальным сюжетом, если мы введем h.myaxes.XLim или get(h.myaxes, 'XLim'), мы вернемся:

ans =

     1    10

Теперь, если мы произвольно увеличим масштаб и сделаем тот же вызов, мы получим что-то другое. В моем случае:

ans =

    3.7892    7.0657

Теперь вам решать, как вы хотите использовать эту информацию для окна ваших данных. Самый простой метод - использовать find для получения индексов ближайшие данные указывают на эти пределы.

Например:

newlimits = h.myaxes.XLim;
newminidx = find(x >= floor(newlimits(1)), 1);
newmaxidx = find(x >= ceil(newlimits(2)), 1);

newmin = x(newminidx);
newmax = x(newmaxidx);

Возвращает [newmin, newmax] из:

ans =

     3     8

Я использовал floor и _ 13_ здесь, потому что я знаю, что мои данные являются целыми числами, ваши критерии могут быть другими, но процесс тот же. Надеюсь, этого достаточно, чтобы вы начали.

person excaza    schedule 08.06.2015