В нашем приложении нам нужно иногда строить контурные линии от geoshow() поверх других графиков поверхности geoshow(). Чтобы сделать их видимыми, нам нужно поднять их по оси Z на несколько единиц. Мы можем найти ZData для контурных линий, но когда мы пытаемся изменить его, мы получаем это сообщение об ошибке.

«Недостаточное количество выходов функции справа от знака равенства для удовлетворения перегруженного назначения».

Мы используем вызов geoshow().

A = geoshow(latMat2, lonMat2,  newRain2, 'DisplayType', 'contour', 'linewidth', 1.0);

После выполнения вышеуказанной команды мы можем увидеть ZData (все нули) с этим

A.Children(:).ZData

Мы пытаемся поменять местами новые значения ZData с помощью этого

A.Children(:).ZData = 8;

и получите указанное выше сообщение об ошибке.

Очевидно, мы делаем что-то не так, но не знаем, что именно.

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

У меня была аналогичная проблема, когда я пытался наложить встроенную карту «состояний» на мой 3D-график поверхности. Ваш вопрос помог мне решить мою проблему, поэтому я надеюсь, что смогу помочь.

Моя первоначальная формулировка была немного другой, так как я использовал опцию «SymbolSpec» функции geoshow. Тем не менее, я думаю, вы можете решить свою проблему, назначив A.Children.ZData массив вместо скаляра.

C = 8;  %some arbitrary height you want place your map at
A.Children.ZData = C*ones(size(A.Children.XData)));

Я думаю, проблема заключалась в том, что XData, YData и ZData должны быть одного размера. Так что вам просто нужно создать массив из всех «8» и назначить его ZData.

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ