Интерактивный контурный график Matlab

У меня есть набор данных или спектров для различных координат x-y.

Выглядит примерно так:

x       y       spectrum x              spectrum y
-14 -18 35.0286000000000    330.643000000000
-14 -18 33.6069000000000    311.247000000000
-14 -18 32.1849000000000    251.419000000000
-14 -18 30.7628000000000    205.673000000000
-14 -18 29.3404000000000    152.912000000000
-14 -18 27.9178000000000    144.101000000000
-14 -18 26.4949000000000    135.292000000000
-14 -18 25.0719000000000    133.514000000000
-14 -16 35.0286000000000    353.507000000000
-14 -16 33.6069000000000    320.039000000000
-14 -16 32.1849000000000    272.517000000000
-14 -16 30.7628000000000    198.642000000000
-14 -16 29.3404000000000    163.458000000000
-14 -16 27.9178000000000    135.314000000000
-14 -16 26.4949000000000    147.592000000000
-14 -16 25.0719000000000    114.190000000000

И так далее.

Я написал программу, которая берет наклон из сегмента каждого спектра и создает новую матрицу, которая выглядит следующим образом:

x       y       slope
-14 -18 0.650084924302224
-14 -16 0.751250946346182
-14 -14 0.0666371921219543
-14 -12 0.703160656652351
-14 -10 1.04017251503861

и так далее.

Затем я делаю матрицы x, y и z из этой матрицы и строю график, используя [C,h] = contourfm(x,y,z).

Что меня интересует, так это программа, в которой я могу щелкнуть контурный график и вывести график отдельного спектра в точке, ближайшей к тому месту, где я щелкнул. Это было бы очень хорошо при анализе моих данных. Это дистанционно возможно? Заранее спасибо за вашу помощь!


person Eli Young    schedule 13.03.2013    source источник


Ответы (1)


Да, это возможно, вам, вероятно, потребуется создать графический интерфейс, но следующее также может вас удовлетворить. Начните с такой функции, как ginput. Например, [x,y] = ginput(n) позволяет определить n точек от текущих осей и возвращает их координаты x и y в векторах-столбцах x и y. Нажатие клавиши возврата прекратит ввод до ввода n точек. Затем из этих координат x,y используйте find для построения соответствующей части имеющихся у вас данных.

person bla    schedule 14.03.2013
comment
Спасибо, функция ginput очень полезна. Я смог написать программу, которая берет данные ginput, преобразует каждую точку в ближайшую фактическую точку x-y и отображает данные для каждой из этих точек. Программирование довольно плохое и должно быть скорректировано в зависимости от размера и интервала карты, но оно работает! Я также смог добавить легенду к рисунку, но это, вероятно, было больше проблем, чем того стоило. Я бы выложил функцию, но она не очень красивая. - person Eli Young; 15.03.2013