Основываясь на комментарии Ратберта, давайте создадим образец сюжета, чтобы поиграть с ним.
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
get(gca, 'XLim')
и соответствующим образом проиндексируйте свои массивы. - person Ratbert   schedule 09.06.2015