С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/173: Рейтинг темы: голосов - 173, средняя оценка - 4.77
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
1

Как построить 3D график по 3 координатам точек, но без функции plot3

19.08.2013, 23:30. Показов 34208. Ответов 33
Метки faq+ (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Мне необходимо построить график по заданным координатам точек. На сколько мне известно такое построение возможно используя функцию plot3, но мне она не подходит, так как она просто последовательно соединяет точки, а мне необходимо построить поверхность, вроде той что получается применяя фукцию surf. Но ее я использовать не могу, так как все версии этой функции требуют в качестве параметра векторы X и Y, в сущности, сетку. Вот пример данных, по которым мне необходимо построить график

0.0157013-0.9930211.08565
0.0168979-0.9911981.06409
0.0151927-0.9920671.04001
0.0135734-0.9930511.05746
0.0130466-0.9919981.06435
0.0125155-0.9929831.06829
0.0114511-0.9929911.06213
0.0103254-0.9929691.06835
0.00923716-0.9929031.07266
0.00813033-0.99291.05062
0.00699864-0.992881.05464
0.00589668-0.9929281.06008
0.00479158-0.9929541.07226
0.00371638-0.9929491.0916

где первый столбец значение координаты х, второй - y, третий - z.

Надеюсь, я понятно объяснила суть проблемы. Заранее благодарю за помощь!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
19.08.2013, 23:30
Ответы с готовыми решениями:

Построить 3d график по трём координатам Х Y Z без матриц только по массиву точек находящихся в TXT
Ребят всем привет! немогу ни как понять как построить 3д графики по трём координатам без матриц, а...

Как построить график функции и последовательность точек на одном плоте?
Пишу на maple 2013. Подскажите, пожалуйста, как построить график функции вместе с...

Как построить график какой либо функции без доп. контролов?
кто-нибудь подскажите как построить график какой либо функции без доп. контролов?

Как построить график по координатам, полученным в ходе цикла?
Такая штука - нужно построить график по точкам, координаты точек я получил с помощью цикла. Как...

33
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
20.08.2013, 14:23 2
Исходя из названия темы, действительно в моем понятии 3D графиком по данным из таблицы является обычная кривая в пространстве, которая прекрасно получается применением обычной функции plot3:
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear all
Signal=[0.0157013   -0.993021   1.08565;
0.0168979   -0.991198   1.06409;
0.0151927   -0.992067   1.04001;
0.0135734   -0.993051   1.05746;
0.0130466   -0.991998   1.06435;
0.0125155   -0.992983   1.06829;
0.0114511   -0.992991   1.06213;
0.0103254   -0.992969   1.06835;
0.00923716  -0.992903   1.07266;
0.00813033  -0.9929 1.05062;
0.00699864  -0.99288    1.05464;
0.00589668  -0.992928   1.06008;
0.00479158  -0.992954   1.07226;
0.00371638  -0.992949   1.0916];
plot3(Signal(:,1),Signal(:,2),Signal(:,3),'-o');
grid on
Как построить 3D график по 3 координатам точек, но без функции plot3

В случаи, если хочется построить поверхность, тогда в общем случаи надо знать зависимость z=f(x,y), поэтому при использовании функции surf или mesh предварительно создаётся сетка отсчётов в плоскость XY, каждой точки которой ставится в соответствие определенное значение z. В данном случаи имеется всего 14 точек, по которым требуется построить поверхность, но как она себя должна вести в промежутках между ними неизвестно в общем случаи. Тогда получается, что задача состоит в нахождении искомой зависимости на основе f(x,y) по данным точкам. Это требуется?
2
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
20.08.2013, 15:02 3
Вот нашёл помимо прямой интерполяции вот такой вот метод для построения поверхности по точкам:
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
clear all
Signal=[0.0157013   -0.993021   1.08565;
0.0168979   -0.991198   1.06409;
0.0151927   -0.992067   1.04001;
0.0135734   -0.993051   1.05746;
0.0130466   -0.991998   1.06435;
0.0125155   -0.992983   1.06829;
0.0114511   -0.992991   1.06213;
0.0103254   -0.992969   1.06835;
0.00923716  -0.992903   1.07266;
0.00813033  -0.9929 1.05062;
0.00699864  -0.99288    1.05464;
0.00589668  -0.992928   1.06008;
0.00479158  -0.992954   1.07226;
0.00371638  -0.992949   1.0916];
figure(1)
plot3(Signal(:,1),Signal(:,2),Signal(:,3),'-o');
grid on
hold on
 
 
Surface_inter=TriScatteredInterp(Signal(:,1),Signal(:,2),Signal(:,3));
sample_x=0.003:.00001:0.02;
sample_y=-0.993:.00001:-0.991;
[qx,qy]=meshgrid(sample_x,sample_y);
qz=Surface_inter(qx,qy);
mesh(qx,qy,qz)

Как построить 3D график по 3 координатам точек, но без функции plot3

Я здесь использовал дефолтный линейный метод интерполирования, но есть варианты, такие как ближайшие соседи и тд.
Можно и нужно почитать хелп по этому методу:
Matlab M
1
doc TriScatteredInterp
2
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
20.08.2013, 15:47 4
Стоит отметить, что в основе этого метода лежит триангуляция Делоне. Почитать подробнее можно здесь:
Вики-пики
Диссер по методу Делоне и его применению
0
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
20.08.2013, 16:43  [ТС] 5
Вроде бы все правильно говорите, да, мне нужен не график, а скорее поверхность. Но почему то мне кажется что я все таки не правильно объясняю. Ведь смысл третьей z - координаты заключается лишь в том какого цвета она должна быть, т е градиент от минимального значения z, до максимального.
Не думаю что в этом должна быть сложность. Я строила в Surfer по этим данным графики и все строилось отлично. А сейчас появилась необходимость автоматизировать работу. Вы понимаете меня? Может просто в Matlab нет такой возможности? Хотя я в этом, конечно, сомневаюсь.
0
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
20.08.2013, 17:07 6
Если ты говоришь о z-координате, как о палитре, тогда получается, что строишь ты не поверхность, а плоскость по первым двум столбцам, на которую наносишь палитру в соответствии с z.Так?
0
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
21.08.2013, 08:15  [ТС] 7
Да, именно!
0
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
21.08.2013, 09:01  [ТС] 8
Вот что получалось, когда я строила в Surfer, примерно так мне и нужно. В файле данные по которым я строила этот график.
Вложения
Тип файла: 7z график.7z (1.53 Мб, 232 просмотров)
0
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
21.08.2013, 11:23 9
мадам, как собсно сгруппированы данные в файле. В массиве - это последовательно отсчеты по X,Y и Z???
0
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
21.08.2013, 12:12  [ТС] 10
Первый столбец координата - х, второй столбец - у, третий - z
0
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
21.08.2013, 15:22 11
Ну в целом я не очень понимаю, как получилось в Surfer, если в плоскости это так выглядит:
Как построить 3D график по 3 координатам точек, но без функции plot3

Если тока полочки совмещать конечно без разрыва, но как тогда заливается это цветом и откуда берутся такие значения на осях мне не ясно
0
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
21.08.2013, 15:55  [ТС] 12
Очень странный график, в моем файле 2 млн точек, а на вашем графике их не больше 500. Я построила в матлабе график без координаты z, он выглядит совсем по другому.
0
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
21.08.2013, 16:03 13
В файле у тебя 47073482 значений, они идут подряд. Но это число не кратно 3ем, хотя ты говоришь, что в файле координаты точек. Как тогда ты по данным строила график в 2D масштабе???На моём графике их 15691160, просто в плоскости много из них совпадает.
Прикрепи свой график посмотреть, что у тебя там не так.
0
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
21.08.2013, 16:21  [ТС] 14
Нет, в моем файле около 2 млн строк, а в каждой строке по 3 значения - x,y,z, которые разделены табуляцией. Может ты как то не правильно считываешь файл?
Миниатюры
Как построить 3D график по 3 координатам точек, но без функции plot3  
0
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
21.08.2013, 16:39 15
Каким образом ты его открываешь его в матлабе?
0
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
21.08.2013, 16:42  [ТС] 16
Matlab M
1
A=dlmread('8_Sph.dat','\t')
и A становится массивом, в котором 2 млн строк и 3 столбца
0
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
21.08.2013, 16:53 17
всё. Я-то думал, что у тебя простой бинарник, а не acиай с разделителями в виде табуляции, тогда понятно)
0
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
22.08.2013, 11:15 18
Вот теперь стало похоже на твой прикрепленный рисунок. Теперь нужно, как я понимаю, тока определенную палитровую раскраску сделать?!
Как построить 3D график по 3 координатам точек, но без функции plot3
0
1 / 1 / 1
Регистрация: 07.04.2013
Сообщений: 49
22.08.2013, 11:59  [ТС] 19
Здорово, да. Именно так. А как ты построил этот график?
0
454 / 280 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
22.08.2013, 17:13 20
Первая картинка - это просто 3d график по данным:
Matlab M
1
2
3
A=dlmread('8_Sph.dat','\t');
plot3(A(:,1),A(:,2),A(:,3),'.');
grid on
А вот так я его покрасил так сказать путём отдельной закраски каждой точки. Но тут на графике тока 1/3 всех точек, потому что на большее у моего компа памяти не хватило. Да и процесс занял долгое время...
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
clear all
load Mymap.mat
Signal=dlmread('8_Sph.dat','\t');
Colorpan=Signal(:,3);
tic;
for i=1:size(Signal,1)/4
    RGB_view=ind2rgb(round(Colorpan(i)/max(Colorpan)*64),Mymap);
    plot3(A(i,1),A(i,2),A(i,3),'o','color',RGB_view);
    hold on
end
Time_elapsed=toc;
grid on
Как построить 3D график по 3 координатам точек, но без функции plot3
0
22.08.2013, 17:13
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
22.08.2013, 17:13
Помогаю со студенческими работами здесь

Построить график функции на интервале (без компонента TChart)
мне нужно, задав функцию Y= tgx-1/3*tg3x+1/5*tg5-1/3 на интервале построить ее график , не...

По координатам точек построить четырехугольник
По координатам точек построить четырехугольник1

Построить график невязки как функцию количества шумовых точек
Имеется изображение 20х20 (прикреплено внизу) Необходимо в Mathcad: Построить график невязки...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Блоги программистов
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(шес­­­­­­тиби­тный асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
Angular vs React vs Vue.js
BasicMan 03.01.2025
О, друзья-разработчики и просто любопытные читатели! Сегодня мы отправимся в увлекательное путешествие по миру фронтенд-разработки, и первой остановкой станет Angular – этакий строгий немецкий. . .
Сравнение микросервисов и монолита
cpp_developer 03.01.2025
Достоинства и недостатки микросервисной архитектуры Микросервисная архитектура представляет собой современный подход к построению программных систем, где приложение разбивается на набор небольших. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru