2017-01-16 5 views
0

У меня есть 3d-участок в MATLAB, состоящий из многих 3d-линий (по line([...],[...],[...],...)). Если я поворачиваю график с помощью мыши и инструмента поворота (щелчок в значке в фигурном окне), MATLAB постоянно масштабирует ось. Я знаю, что можно вручную настроить пределы оси, используя axis([...]), но я не знаю значения min/max 3d-линий или поверхностных объектов.Получить min/max-value 3d-plot

Вы можете проверить его сам, набрав surf(peaks). Ось постоянно изменяется между 0-50 и 0-60. Я использую R2011a.

Есть ли у вас какие-либо предложения по получению значений 3d-min/max составленных 3d-линий/3d-поверхностей-сеток для установки осевых границ вручную?

Благодаря

+0

Пытались ли вы 'ось equal'? 'ось vis3d'? –

+0

'axis equal' не работает для меня (но для' surf (peaks) '), но' axis vis3d' действительно работает. Интересно. Если вы опубликуете это как ответ, я могу принять его. – Lemonbonbon

ответ

2

Я думаю, что вы не обнаружили команду axis еще. Из the documentation:

ось vis3d

Замораживание свойства соотношения сторон. Устанавливает режим пропорций формата окна и свойства режима пропорций данных в ручном режиме.

Пример:

> surf(peaks); 
> axis vis3d 

... никаких изменений масштабирования более случайной оси.

Если вы действительно нужно извлечь мин/макс данных (редкие случаи), вы можете использовать что-то по следующим направлениям:

plots = get(gca, 'children'); 
zdata = get(plots, 'zdata'); 
if isscalar(plots) 
    zdata = {zdata}; end 

maxZ = cellfun(@(x)max(x(:)), zdata); 
minZ = cellfun(@(x)min(x(:)), zdata);