реклама на сайте
подробности

 
 
> Построение диаграмма направленности, Из данных построить 3D ДН
vatyl
сообщение Apr 14 2009, 11:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 19-09-07
Пользователь №: 30 677



Стоит задача построить диагармму направленности в 3D.

Имеем:

Значения угла по азимуту в полярной системе координат (градус, минута, секунда)
Значения угла по углу места в полярной системе координат (градус, минута, секунда)
Напряжонность эллектрического поля в Вольтах

Значений масса диаграмма будет гладнькая.

Хотелось бы получить изображение 3D диаграммы привязанной к полярной системе координат, чтобы можно было её поворачивать (вращать)

У меня получилось построить даграмму в полярных координатах (Строил в Mathlab (построть 3D в полярных координах он не может)), но плоскость не наглядно, темболее значений столлько что грех не воспользоваться.

Поделитесь своми мыслями.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
jam
сообщение Apr 14 2009, 14:15
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 792
Регистрация: 9-08-05
Из: Транай
Пользователь №: 7 474



Цитата(vatyl @ Apr 14 2009, 15:16) *
Стоит задача построить диагармму направленности в 3D.

Имеем:

Значения угла по азимуту в полярной системе координат (градус, минута, секунда)
Значения угла по углу места в полярной системе координат (градус, минута, секунда)
Напряжонность эллектрического поля в Вольтах

Значений масса диаграмма будет гладнькая.

Хотелось бы получить изображение 3D диаграммы привязанной к полярной системе координат, чтобы можно было её поворачивать (вращать)

У меня получилось построить даграмму в полярных координатах (Строил в Mathlab (построть 3D в полярных координах он не может)), но плоскость не наглядно, темболее значений столлько что грех не воспользоваться.

Поделитесь своми мыслями.

Для программы mmana был где-то 3D-визуализатор, но поскольку это увеличивает время рассчёта, особо ей не пользовался, обходился двумя проекциями.
Go to the top of the page
 
+Quote Post
Alexey_B
сообщение Apr 14 2009, 17:14
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 124
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 887



Цитата(vatyl @ Apr 14 2009, 15:16) *
У меня получилось построить даграмму в полярных координатах (Строил в Mathlab (построть 3D в полярных координах он не может)), но плоскость не наглядно, темболее значений столлько что грех не воспользоваться.

Поделитесь своми мыслями.


Если в полярных строить 3D не может, тогда нужно перевести их в декартовы и строить трёхмерный график в них. Преобразования там элементарные.
Go to the top of the page
 
+Quote Post
vatyl
сообщение Apr 15 2009, 06:28
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 19-09-07
Пользователь №: 30 677



Цитата(Alexey_B @ Apr 14 2009, 20:14) *
Если в полярных строить 3D не может, тогда нужно перевести их в декартовы и строить трёхмерный график в них. Преобразования там элементарные.

Построение по оси X,Y проблемм не вызывает, а вот построение по оси Z проекция угла через тангенс (tan(PHI) PHI угол места) очень сильно искажает график.
Жаль что нет средств для таких задач.

кому интересно данные в файле

первые 3 колонки данные угла места, следующие 3 колонки данные угла по азимуту, последняя колонка значение мощьности

60;54;30; ;106;26;8; ;1,39


визуализация должна выглядеть следующим образом: 4 блина диаграммы направленности расположенные на углах 0град, 30град, 60град, 90град (практически цилиндр),

Сообщение отредактировал vatyl - Apr 15 2009, 06:30
Прикрепленные файлы
Прикрепленный файл  0904.txt ( 296.79 килобайт ) Кол-во скачиваний: 35
 
Go to the top of the page
 
+Quote Post
Daddy Torque
сообщение Dec 15 2011, 14:08
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 21-09-08
Из: СПб
Пользователь №: 40 369



Наткнулся на эту ветку, пытаясь построить ДН для своей антенны... в итоге построил таким образом:


dia_sq = dia .* conj(dia);
[U,V] = meshgrid((hor_begin*pi/180:hor_step*pi/180:hor_end*pi/180),(ver_begin*pi/180:ver_step*pi/180:ver_end*pi/180));
X = dia_sq .* cos(V) .* cos(U);
Y = dia_sq .* cos(V) .* sin(U);
Z = dia_sq .* sin(V);
figure(2);
mesh(X,Z,Y);


поясняю: dia - это сетка комплексных значений где орты сетки это углы по горизонтали и вертикали.
соответственно, dia_sq это аналогичная сетка мощностей с разных направлений
дальше из полярных трёхмерных координат переходим в декартовые трёхмерные и строим mesh.

На всякий случай привожу полную функцию (хотя там есть ещё другие функции, которые здесь не буду приводить)

function f=directive_pattern_vert_hfa_3d(freq, hor_begin, hor_end, hor_step, ver_begin, ver_end, ver_step)
antenna = init_antenna_def();
LO_FREQ_LIM = antenna.lo_freq_limit;
HI_FREQ_LIM = antenna.hi_freq_limit;
antenna.beams_count = 1;
antenna.elevation = 0;
elevation_grid = (ver_begin:ver_step:ver_end)';
azimuth_grid = (hor_begin:hor_step:hor_end)';
elevation_steps_count = size(elevation_grid, 1);
azimuth_steps_count = size(azimuth_grid, 1);
dia = zeros(elevation_steps_count,azimuth_steps_count);
bin = convert_freq_to_bin(freq, 12207, 2048);
freq = convert_bin_to_freq(bin, 12207, 2048);
progress_bar(sprintf('frequency corrected to %f to be equal to closest bin\n',freq), 0, 0);
for j = (1:1:azimuth_steps_count);
azimuth = azimuth_grid(j);
antenna.beams(1) = azimuth*pi/180;
for i = (1:1:elevation_steps_count);
progress_bar('', (i-1)+elevation_steps_count*(j-1), azimuth_steps_count*elevation_steps_count);
elevation = elevation_grid(i);
signal_time = sim_signal_hfa(freq, 1, 0, -azimuth*pi/180, elevation*pi/180, antenna );
signal_freq = FftTime(antenna, signal_time, '', LO_FREQ_LIM, HI_FREQ_LIM);
clear signal_time;
spectrum = sim_antenna3d_direct_beam_forming(signal_freq, antenna, bin);
dia(i,j) = spectrum(bin);
end
end
fprintf(1,'\n');
figure(1);
surf(azimuth_grid, elevation_grid, dia.*conj(dia));
title(sprintf('direct transform, f=%f Hz',freq));
dia_sq = dia .* conj(dia);
[U,V] = meshgrid((hor_begin*pi/180:hor_step*pi/180:hor_end*pi/180),(ver_begin*pi/180:ver_step*pi/180:ver_end*pi/180));
X = dia_sq .* cos(V) .* cos(U);
Y = dia_sq .* cos(V) .* sin(U);
Z = dia_sq .* sin(V);
figure(2);
mesh(X,Z,Y);
f = dia;


на рисунке моя диаграмма в 3d:
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Daddy Torque
сообщение Dec 16 2011, 07:23
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 21-09-08
Из: СПб
Пользователь №: 40 369



поясню ещё... то, что строится и нарисовано - это не совсем ДН, т.к. направление компенсации антенны тоже меняется с изменением направления прихода сигнала - это скорее диаграмма отклика.. не знаю, как правильно это назвать. И ещё там перепутано, надо делать mesh(X,Y,Z). Но это не суть важно, важно, что код пригоден для формирования 3d диаграмм направленности.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.028 секунд с 7
ELECTRONIX ©2004-2016