Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21

3-х мерный график (проекция) по данным массива

21.06.2018, 13:12. Показов 2700. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
подскажите пожалуйста, как построить 3-х мерный график (с проекцией на ось Z) по данным массива (задан в виде таблицы).
Использую следующий код:
Matlab M
1
2
3
4
5
6
7
8
9
10
Phi=linspace(-pi/2,pi/2,39);
Theta=linspace(0,2*pi,29);
[Phi,Theta]=meshgrid(Phi,Theta);
 
M1=xlsread('Probe_1_Lateral_q(α=1°)_360.xlsx');
[r1,c1]=size(M1);
R=M1(2:r1,2:c1);
 
[X,Y,Z]=sph2cart(Theta,Phi,R);
mesh(X,Y,Z);
Заранее спасибо!
Миниатюры
3-х мерный график (проекция) по данным массива  
Вложения
Тип файла: xlsx Probe_1_Lateral_q(?=1°)_360.xlsx (48.6 Кб, 9 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2018, 13:12
Ответы с готовыми решениями:

Построить график функции по данным массива
Всем привет. Возник вопрос. Хочу построить график для нескольких функций в Windows Form. Как это сделать? На вход будут поступать...

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

3-х мерный график
На форме у меня через subplot рисуются 3 3-х мерных графика. Мне нужно поменять угол обзора этих графиков. Есть команда view (), но она...

16
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
21.06.2018, 22:50
А что, конкретно, у Вас не получается?
В результате выполнения Вашего кода строится весьма затейливая трехмерная фигура. Какой она должна быть на самом деле, мне например, неведомо. Или она не удовлетворяет Вас чисто эстетически?
Не ясно, также, что символизирует приведенная Вами картинка.
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21
23.06.2018, 12:19  [ТС]
Спасибо большое за ответ. Необходимо построить проекцию этой 3-х мерной фигурки на ось , как на картинке. На картинке изображены три такие проекции на одном графике.

Для сферической системы координат это

x = r(β, tanγ)sinγcosβ,
y = r(β, tanγ)sinγsinβ
z = r(β, tanγ)cosγ = 0

где r(β, tanγ) - значения таблицы.

Подскажите пожалуйста как изменить код, чтобы получить такую проекцию.

Буду признательна за совет!
0
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
23.06.2018, 22:49
Цитата Сообщение от Alena Bel Посмотреть сообщение
построить проекцию этой 3-х мерной фигурки на ось
Вообще-то, проекция чего угодно на ось - есть отрезок прямой. Наверно Вы имели в виду проекцию на плоскость. (Например XY, YZ, ZX.) В таком случае, для получения завораживающих картинок достаточно написать
Matlab M
1
2
3
4
5
6
figure(1);
mesh(X,Y,Z.*0);
figure(2);
mesh(X,Y.*0,Z);
figure(3);
mesh(X.*0,Y,Z);
А для получения картинок попроще, казалось бы, достаточно вот этого
Matlab M
1
2
3
4
5
6
figure(4);
plot(X,Y);
figure(5);
plot(X,Z);
figure(6);
plot(Y,Z);
Но в этом случае, почему-то, прорисовываются не все линии. Причины пока не могу понять.
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21
26.06.2018, 00:20  [ТС]
Спасибо за ответ!


Проекция на плоскость это то, что нужно
Matlab M
1
mesh(X.*0,Y,Z)
Только не могу довести эту задачку до ума, что бы получился график, как на картинке (шарик в проекции), а не спираль с отрицательными значениями. Не понимаю как получаются отрицательные значения, по обеим осям (рисунок). Значения таблицы - положительные числа. Можно ли каким нибудь образом использовать условие:

x = r(β, tanγ)sinγcosβ,
y = r(β, tanγ)sinγsinβ
z = r(β, tanγ)cosγ = 0, где r(β, tanγ) - значения таблицы.

Спасибо ещё раз за помощь!
Миниатюры
3-х мерный график (проекция) по данным массива  
0
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
26.06.2018, 09:56
Цитата Сообщение от Alena Bel Посмотреть сообщение
что бы получился график, как на картинке (шарик в проекции), а не спираль с отрицательными значениями
Погодите, погодите ...
Вы саму 3D фигуру видели? Это именно трехмерная спираль весьма дикого вида. Не могу понять ... Вы реально ожидаете, что проекция упомянутой фигуры на какую-либо плоскость будет представлять из себя "шарик"??? ... ???
Да и начало координат трехмерного пространства приходится на центр 3D фигуры, поэтому удивляться наличию отрицательных значений я бы Вам не советовал. Покрутите мышкой 3D график. Разглядите его с разных сторон.

А Вы уверенны, что хотите получить проекции именно этой фигуры?
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21
26.06.2018, 12:28  [ТС]
Здравствуйте, ida2, задача была построить этот шарик, по данным таблицы. Я предположила, что это может быть проекция на плоскость (так было заявлено в работе из которой был взят "шарик"). Эту дикую спираль я крутила-вертела, кажется, если отобразить одну из долей, можно получить заветный "плод"

Вы упомянули про начало координат, которое в случае спирали находиться в её центре. Можно ли начало координат привязать как у шарика к оси Х и оттуда уже строить все значения из таблицы??

К сожалению у меня нет достаточно информации, как был построен "шарик", какие хитрости были использованы, но нужен иммено этот "шарик". Засада!
0
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
26.06.2018, 12:50
знакомая улитка...
Alena Bel, вы можете дать первоисточник ваших "шариков - кругов"?
(проекции на плоскость не могут быть шариками, только круги)...
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21
26.06.2018, 15:57  [ТС]
Здравствуйте Krasme! Как же здорово, что вы откликнулись Вы увидели знакомые данные?! Так и есть, помните те "странные графики с пиком". Исходные данные одни и те же, только теперь их нужно в виде "шариков-кругов" представить.

Информации по этим шарикам не много, первоисточник "шариков - кругов" это публикация в статье. По типу, картинка и к ней подпись.


Дословно: "The measured reflection tables are presented in two-dimensional reflection indicatrices; see Figures 4 - 7. The reflection indicatrix presents the r-table r(β, tanγ) projected to z-plane in spherical coordinates where x = r(β, tanγ)sinγcosβ, y = r(β, tanγ)sinγsinβ and z = r(β, tanγ)cosγ = 0", далее идет картинка шариков-кругов и всё

Прикреплю ещё раз исходные данные, в которой первый столбец - tanγ, первая строка - β, r(β, tanγ) - значения в таблицы. Буду вам очень признательна за помощь!
Вложения
Тип файла: xlsx Probe_1_Lateral_q(?=1°)_360.xlsx (48.6 Кб, 4 просмотров)
0
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
26.06.2018, 16:11
Цитата Сообщение от Alena Bel Посмотреть сообщение
это публикация в статье.
покажите ее, файл или ссылку в студию...
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21
26.06.2018, 16:36  [ТС]
http://lib.tkk.fi/Diss/2011/is... 044101.pdf

страницы 28-29-30.
0
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
26.06.2018, 19:01
Возможно проблема в том, сто функция sph2cart производит преобразование координат в соответствии со следующими формулами:
x = r .* cos(elevation) .* cos(azimuth)
y = r .* cos(elevation) .* sin(azimuth)
z = r .* sin(elevation)
а формулы из статьи выглядят несколько иначе
x = r(β, tanγ)sinγcosβ,
y = r(β, tanγ)sinγsinβ
z = r(β, tanγ)cosγ = 0
Sin и Cos в них участвуют по разному.

Добавлено через 1 час 5 минут
Кроме того, tany очевидно следует интерпретировать как tan(y). Тогда, перед преобразованием координат разумно поменять его на y = atan(tany).
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21
19.01.2019, 14:07  [ТС]
и снова здравствуйте не избежать мне построения моих красивых фигур из первого поста. На картинке три диаграммы (по трем таблицам) на одном графике. Мне бы понять как построить одну диаграмму, по одной такой таблице. Таблица в первом посте.

Я снова пытаюсь и использую следующий код:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
M2=xlsread('Probe_1_Lateral_q(α=1°)_360.xlsx');
 
[r2,c2]=size(M2);
A2=M2(1,2:c2)/180*pi;
B2=M2(2:r2,1)/180*pi; 
 
Q2=M2(2:r2,2:c2);        %r(β, tanγ)
 
a2=M2(1,1:c2)/180*pi;  
b2=M2(1:r2,1)/180*pi;  
 
x = Q2*sin(a2)*cos(b2);
y = Q2*sin(a2)*sin(b2);
z = 0;
 
mesh(x,y,z,q2,'edgecolor', 'b');
Ошибка уже в вычислениях x, не соответствуют размеры массивов, как их перемножать не равные массивы? Какую функцию использовать для построения mesh или plot в этом случае?
0
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
20.01.2019, 03:57
Alena Bel, 9 и 10 строки совершенно ни к чему. В 12 и 13 строках вместо a2 и b2 нужно поставить A2 и B2. Далее, для чего вам нужно единственное значение z=0? Впрочем, у вас получатся и по одному значению x и y. Тогда построится всего одна точка с координатами x,y,0.
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21
20.01.2019, 21:19  [ТС]
Спасибо за ответ!

Строка 12 выдаёт ошибку: Inner matrix dimensions must agree. Т.к. Q2 [29х39] массив, а А2 [1х39] и В2 [29х1] массивы. Как правильно их перемножить?

z=0, условие из формул выше:

x = r(β, tanγ)sinγcosβ,
y = r(β, tanγ)sinγsinβ
z = r(β, tanγ)cosγ = 0
0
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
20.01.2019, 21:43
Цитата Сообщение от Alena Bel Посмотреть сообщение
Как правильно их перемножить?
А что вы хотите перемножить? Какие значения?

Добавлено через 6 минут
A2 - это https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta, B2 - это tanhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\gamma, я правильно понял?
0
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 21
20.01.2019, 21:55  [ТС]
хочу получить значение x по формуле:

x = r(β, tanγ)sinγcosβ, где r(β, tanγ) - это Q2 (строка 7), гамма - А2 (строка 4) и бетта - В2 (строка 5).

И соответственно

y = r(β, tanγ)sinγsinβ, а затем построить по найденным x,y диаграмму, как в первом посте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.01.2019, 21:55
Помогаю со студенческими работами здесь

3х мерный график
Кто знает как проще всего нарисовать 3х мерный график, есть 2-х мерная матрица значений (z, я полагаю), x и y условно можно сделать с...

3х мерный график
Здравствуйте,помогите.Мне нужно построить 3-х мерный график (оси e,p,b),по точкам e=0.0021,p=0.05,b=0.04 e=0.0023,p=0.084,b=0.03 ...

3х мерный график, ругается
В чем ошибка, друзья?

Градуированный 3-мерный график
Друзья, может, кто подскажет, какой функцией можно построить градуированный график по трём переменным? По такому же принципу, как на...

Построить 3-х мерный график, неравномерный массив Matlab
Добрый день, вновь обращаюсь с просьбой помочь в построении 3-х мерной замкнутой поверхности, вида Fig.2 по значениям таблицы...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru