Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Графики в Matlab для большого числа точек
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
o-henry
Осваиваю Matlab 7-й.
Хочу отобразить на графике данные, считываемые из файла.
График строю с помощью функции plot().
Данные в файле-это 256K=262144 отсчетов некоторой функции.
График получаю, но...

Увеличиваю начальный участок графика лупой
и с помощью кнопки DataCursor получаю координаты интересующей меня точки,
скажем
X:1030
Y:4010.

тут все ОК.

Теперь хочу просмотреть с увеличением конечный участок графика.
Увеличиваю конечный участок, и с помощью кнопки DataCursor пытаюсь посмотреть координаты интересующих меня точек. При этом координаты отображаются в виде
X:2.605e+005
Y:3777

Получается, что для точек с близкими значениями X я не могу получить точное значение этой координаты.
Т.Е и для точки с координатами по X:260501 и для точки с координатами по X:260502
отображаемое значение будет одно и тоже X:2.605e+005

Как с этим бороться?
Stanislav
Цитата(o-henry @ Feb 19 2007, 14:21) *
...Как с этим бороться?
Попробуйте так:
File->Preferences->Command window->Numeric format->long.

ЗЫ. Нет, так не работает.
По-видимому, этот параметр нужно установить в свойствах картинки (конкретно, осей)...
Doka
Цитата(o-henry @ Feb 19 2007, 14:21) *
Теперь хочу просмотреть с увеличением конечный участок графика.
Увеличиваю конечный участок, и с помощью кнопки DataCursor пытаюсь посмотреть координаты интересующих меня точек.
....
Т.Е и для точки с координатами по X:260501 и для точки с координатами по X:260502
отображаемое значение будет одно и тоже X:2.605e+005


не проще ли не стараться объять необъятное, а просто вывести на график нужный участок (при этом уважая и свое время - всеже 262К точек вывести - это неслабо)))

если таких участков нужно исследовать несколько, от обычноя поступаю так:
"всасываете" в workspace данные из файла при помощи m-скрипта (самая затратная по времени процедура), а дальше из командной строки вызываете plot() для нужных регионов (возможны варианты).

z.B.:
Код
plot(1:128, y(2^18 - 128 : 2^18));
Stanislav
И всё-таки, как сделать, чтобы на осях картинки отображалось более 4-х знаков после запятой (точнее, более 5 значащих цифр)? Мне тоже интересно. format не работает, проверял. А несколько сот тысяч точек - вполне обычное дело.

2 Doka
По-моему, проще M-файл создать. Там всё гораздо быстрее получается.
amusin
Цитата(o-henry @ Feb 19 2007, 16:21) *
Хочу отобразить на графике данные, считываемые из файла.


В свое время тоже делал просмотровщик, а потом узнал о команде sptool
Doka
Цитата(Stanislav @ Feb 19 2007, 23:15) *
По-моему, проще M-файл создать. Там всё гораздо быстрее получается.

согласен: для каждого это индивидуально.. но мне как-то привычнее (и быстрее!) из командной строки в режиме правки предыдущей команды работать (особенно если это "на один раз" - посмотрел и забыл).
o-henry
Цитата(amusin @ Feb 20 2007, 10:55) *
Цитата(o-henry @ Feb 19 2007, 16:21) *

Хочу отобразить на графике данные, считываемые из файла.


В свое время тоже делал просмотровщик, а потом узнал о команде sptool


А если мне нужно обработать реальные данные, полученные с внешнего устройства и сохраненные в файл в специфичном формате (а не сферического коня в вакууме) - то как мне поможет sptool?
Stanislav
Цитата(o-henry @ Feb 20 2007, 18:29) *
А если мне нужно обработать реальные данные, полученные с внешнего устройства и сохраненные в файл в специфичном формате (а не сферического коня в вакууме) - то как мне поможет sptool?
В общем случае - нет, не поможет. Обнародуйте формат, тогда можно будет порекомендовать подходящий способ.

ЗЫ. sptool - для понта, freed - для дела. smile.gif
o-henry
Цитата(Stanislav @ Feb 21 2007, 00:40) *
ЗЫ. sptool - для понта, freed - для дела. smile.gif

Вот с fread (если Вы его имели в виду) как раз проблем у меня не возникло.
И с преобразованием формата тоже.
Хотелось бы разобраться с отображением. sad.gif
Stanislav
Цитата(o-henry @ Feb 21 2007, 10:07) *
Цитата(Stanislav @ Feb 21 2007, 00:40) *

ЗЫ. sptool - для понта, freed - для дела. smile.gif

Вот с fread (если Вы его имели в виду) как раз проблем у меня не возникло.
Конечно, с fread. Описался. smile.gif
Пробовал принудительно задать сетку XTick с шагом 1, получал вообще "out of memory" или висюк.
o-henry
На случай, если еще кому-нибудь(кроме меня) это интересно, то:

С помощью http://matlab.exponenta.ru
и матлабовского хелпа проблема решается так:

1) пишем такие функции:
Код
% comment: Search in MatLab help the following: Change Data Cursor Text

function []= my_plot (y)
fig = figure;
plot(y);
dcm_obj = datacursormode(fig);
set(dcm_obj,'UpdateFcn',@myupdatefcn);

function txt = myupdatefcn(empt,event_obj)
pos = get(event_obj,'Position');
txt = {['Отсчет№: ',num2str(pos(1))],...
       ['Амплитуда: ',num2str(pos(2))]};


2) далее в основном .m файле заменяем вызовы plot() на нашу my_plot()
и получаем отображение координат в нужном виде.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.