|
Построение диаграмма направленности, Из данных построить 3D ДН |
|
|
|
Apr 14 2009, 11:16
|
Участник

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

|
Стоит задача построить диагармму направленности в 3D.
Имеем:
Значения угла по азимуту в полярной системе координат (градус, минута, секунда) Значения угла по углу места в полярной системе координат (градус, минута, секунда) Напряжонность эллектрического поля в Вольтах
Значений масса диаграмма будет гладнькая.
Хотелось бы получить изображение 3D диаграммы привязанной к полярной системе координат, чтобы можно было её поворачивать (вращать)
У меня получилось построить даграмму в полярных координатах (Строил в Mathlab (построть 3D в полярных координах он не может)), но плоскость не наглядно, темболее значений столлько что грех не воспользоваться. Поделитесь своми мыслями.
|
|
|
|
|
 |
Ответов
(1 - 5)
|
Apr 14 2009, 14:15
|

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

|
Цитата(vatyl @ Apr 14 2009, 15:16)  Стоит задача построить диагармму направленности в 3D.
Имеем:
Значения угла по азимуту в полярной системе координат (градус, минута, секунда) Значения угла по углу места в полярной системе координат (градус, минута, секунда) Напряжонность эллектрического поля в Вольтах
Значений масса диаграмма будет гладнькая.
Хотелось бы получить изображение 3D диаграммы привязанной к полярной системе координат, чтобы можно было её поворачивать (вращать)
У меня получилось построить даграмму в полярных координатах (Строил в Mathlab (построть 3D в полярных координах он не может)), но плоскость не наглядно, темболее значений столлько что грех не воспользоваться. Поделитесь своми мыслями. Для программы mmana был где-то 3D-визуализатор, но поскольку это увеличивает время рассчёта, особо ей не пользовался, обходился двумя проекциями.
|
|
|
|
|
Apr 14 2009, 17:14
|
Частый гость
 
Группа: Свой
Сообщений: 124
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 887

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

Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 15 2011, 14:08
|
Участник

Группа: Участник
Сообщений: 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:
|
|
|
|
|
Dec 16 2011, 07:23
|
Участник

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

|
поясню ещё... то, что строится и нарисовано - это не совсем ДН, т.к. направление компенсации антенны тоже меняется с изменением направления прихода сигнала - это скорее диаграмма отклика.. не знаю, как правильно это назвать. И ещё там перепутано, надо делать mesh(X,Y,Z). Но это не суть важно, важно, что код пригоден для формирования 3d диаграмм направленности.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|