13 / 3 / 0
Регистрация: 20.02.2013
Сообщений: 94
1

Графики ДН в 3D

26.02.2013, 10:27. Показов 12050. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Подскажи пожалуйста, почему не определяется функция при построении графика в 3d, ведь она же задана выше...
(это про Dn1 и Dn2)? Я опять наверно что-то напутал...
График должен получиться вот такого типа:
Графики ДН в 3D

И, опять возникает вопрос...
Там на графике выделены полосы... Они получаются при вычислении функции sin(x)./x при x=0.
Я пробовал устронить эти пустоты функцией fplot, но ничего не получилось...
Как их убрать?

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
clear all
clc
 
lym=0.1;
% lym- длина волны
m=4;
n=4;
% где m-число излучателей по оси x, n-число излучателей по оси y
N = m*n;
% N-кол-во излучателей
dx=0.7*lym;
dy=0.7*lym;
% где dx,dy шаг решётки по оси x и y
k=2*pi/lym;
% k-волновое число
deltapsix=0;
deltapsiy=0;
ksix=deltapsix/(k*dx);
ksiy=deltapsiy/(k*dy);
% где ksix,ksiy-коэффициенты замедления
theta = -90:90;
fi1=0; fi2=pi/2; 
% fi1=0-для плоскости XOZ,fi2=pi/2-для плоскости YOZ
p=k*dx/2; o=(sind(theta))*cosd(fi1); o2=(sind(theta))*cosd(fi2);
p2=k*dy/2;
alfa=p*(o-ksix);
alfa2=p*(o2-ksix);
beta=p2*(o-ksiy);
beta2=p2*(o2-ksiy);
% где alfa и beta -обобщённые аргументы
a=sind(m*alfa); b=sind(alfa); c=sind(n*beta); d=sind(beta);
a1=sind(m*alfa2); b1=sind(alfa2); c1=sind(n*beta2); d1=sind(beta2);
Fp1=(a./b).*(c./d);
Fp2=(a1./b1).*(c1./d1);
% где Fp1,2 - множитель направленности антенной решётки
F1=cosd(theta).^8;
% где F1-комплексная векторная хар-ка направленности изотропного излучателя
Dn1=F1.*Fp1;
Dn2=F1.*Fp2;
DnN1=Dn1/max(max(Dn1))
DnN2=Dn2/max(max(Dn2))
% Dn1,2- ДН ФАР в плоскости XOZ и YOZ
plot(theta,DnN1,'*r',theta,DnN2,'ob'); grid
 
 
% Dn1 - ДН ФАР в 3D
z=Dn1;
[alfa beta] = meshgrid(-90:90);
z=z/max(max(z));
surf(alfa,beta,z,'FaceAlpha',0.5)
shading interp
xlabel('alfa')
ylabel('beta')
zlabel('z')
 
 
% Dn2 - ДН ФАР в 3D
[alfa beta] = meshgrid(-90:90);
z2=Dn2;
z2=z2/max(max(z2));
surf(alfa2,beta2,z2,'FaceAlpha',0.5)
shading interp
xlabel('alfa2')
ylabel('beta2')
zlabel('z2')
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2013, 10:27
Ответы с готовыми решениями:

Найти все функции f(x), графики графики которых проходт через точку В, если:
f'(x)=4{x}^{2}-9{x}^{-2}, B(3;-2)

Графики (Нужно в VC++ построить графики...)
Нужно в VC++ построить графики...Двумерные и трехмерные...Не подскажете как?

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

Графики на си
Помогите построить график на си ρ=a*ctg(φ) в полярной системе координат

14
5241 / 3569 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
26.02.2013, 12:12 2
Дружочек, дык z должно быть матрицей!
Это я подправил.

Чтобы убрать разрывы в нуле, нужно ввести проверку или вручную вставлять значения в массив, но я тебе воспользуюсь встроенной ф-цией sinc (описание)

Единственное, его пришлось чуток преобразовать:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{sin(na)}{sin(a)} = \frac{n \cdot sin(na)}{na} \frac{a}{sin(a)} = \frac{ n \cdot  \mathrm{sinc}(na)}{\mathrm{sinc}(a)}

И углы перевести в радианы (строки 31, 32), т.к. sinc понимает только радианы
Тогда программа станет:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
clear all
clc
 
lym=0.1;
% lym- длина волны
m=4;
n=4;
% где m-число излучателей по оси x, n-число излучателей по оси y
N = m*n;
% N-кол-во излучателей
dx=0.7*lym;
dy=0.7*lym;
% где dx,dy шаг решётки по оси x и y
k=2*pi/lym;
% k-волновое число
deltapsix=0;
deltapsiy=0;
ksix=deltapsix/(k*dx);
ksiy=deltapsiy/(k*dy);
% где ksix,ksiy-коэффициенты замедления
theta = -90:90;
fi1 = 0; fi2= 80;
% fi1=0-для плоскости XOZ,fi2=pi/2-для плоскости YOZ
p=k*dx/2; o=(sind(theta)).*cosd(fi1); o2=(sind(theta)).*cosd(fi2);
p2=k*dy/2;
alfa=p*(o-ksix);
alfa2=p*(o2-ksix);
beta=p2*(o-ksiy);
beta2=p2*(o2-ksiy);
% где alfa и beta -обобщённые аргументы
alfa= deg2rad(alfa); beta = deg2rad(beta);
alfa2 = deg2rad(alfa2); beta2 = deg2rad(beta2);
 
Fp1 = (m*sinc(m*alfa)./sinc(alfa)).*(n*sinc(n*beta)./sinc(beta));
Fp2 = (m*sinc(m*alfa2)./sinc(alfa2)).*(n*sinc(n*beta2)./sinc(beta2));
% где Fp1,2 - множитель направленности антенной решётки
F1=cosd(theta).^8;
% где F1-комплексная векторная хар-ка направленности изотропного излучателя
Dn1=F1.*Fp1;
Dn2=F1.*Fp2;
DnN1 = Dn1/max(max(Dn1));
DnN2 = Dn2/max(max(Dn2));
% Dn1,2- ДН ФАР в плоскости XOZ и YOZ
plot(theta,DnN1,'*r',theta,DnN2,'ob'); grid
xlim([-90 90])
 
% ДН ФАР в 3D
z = Dn1'*Dn2;
[alfa, beta] = meshgrid(-90:90);
z=z/max(max(z));
figure
surf(alfa,beta,z,'FaceAlpha',0.5)
shading interp
xlabel('\alpha')
ylabel('\beta')
zlabel('z')
xlim([-90 90])
ylim([-90 90])
Графики ДН в 3D


*гладенькое, как яичко!
3
13 / 3 / 0
Регистрация: 20.02.2013
Сообщений: 94
26.02.2013, 13:30  [ТС] 3
Спасибо большое!!!!!!
У меня ещё один вопрос...
Я сейчас пробую это всё построить в сферической системе координа... Мне это лучше делать через полярную систему или сразу?

Добавлено через 56 минут
А там нельзя сделать два отдельных графика (для Dn1 и Dn2), просто при их произведении получается ни совсем то, что надо?
Я использовал раньше формулу (sin(m*alfa)./sin(alfa)).*((sin(n*beta)./sin(beta)) напрямую в 3D, но при изменении параметров в основном коде на 3D график это не влияло...
Вот и решил их связать, а как z=Dn1 записать матрицей не знаю...
Подскажи пожалуйста.
Может посоветуешь какую-нибудь литературу по matlab, а то в инете полно всего, но почти всё безполезно...
0
5241 / 3569 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
26.02.2013, 14:31 4
а ты не замечаешь, что выражение Z(alfa,betta) уже расчитано в полярной системе
Двумерные кривые Dn1 Dn2 можно изобразить в полярной системе: polar(theta*pi/180, Dn1) (описание)
А вот для объемных поверхностей, такой сферической системы координат нет Поэтому поверхность оставляй как есть!

Добавлено через 2 минуты
Цитата Сообщение от Dimast Посмотреть сообщение
как z=Dn1 записать матрицей не знаю...
Это можно сделать так:
Matlab M
1
2
z1 = Dn1'*ones(size(Dn2));
z2 = ones(size(Dn1'))*Dn2;
Вот только оно уже не будет в виде колокольчика
1
13 / 3 / 0
Регистрация: 20.02.2013
Сообщений: 94
26.02.2013, 18:15  [ТС] 5
Я думаю ты прав про произведение Dn1 и Dn2...
Только там пропадают почему-то боковые лепестки
Конечно их может и не должно быть для этого случая, но я это ещё уточню в университете...
А про системы координат ты АБСОЛЮТНО прав!
0
13 / 3 / 0
Регистрация: 20.02.2013
Сообщений: 94
27.02.2013, 12:06  [ТС] 6
Доброго времени суток!
Подскажи пожалуйста, у меня получится из моих вычислений построить график такого типа?
Графики ДН в 3D

А потом это всё и в 3D?
0
5241 / 3569 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
27.02.2013, 12:56 7
Двумерный получится, а вот с 3D... придется крепко полюбиться...
.
..
...
*люблюсь*
....
.....
......!
получилось!
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
clear all
clc
 
lym=0.1;
% lym- длина волны
m=4;
n=4;
% где m-число излучателей по оси x, n-число излучателей по оси y
N = m*n;
% N-кол-во излучателей
dx=0.7*lym;
dy=0.7*lym;
% где dx,dy шаг решётки по оси x и y
k=2*pi/lym;
% k-волновое число
deltapsix=0;
deltapsiy=0;
ksix=deltapsix/(k*dx);
ksiy=deltapsiy/(k*dy);
% где ksix,ksiy-коэффициенты замедления
theta = -90:5:90;
fi1 = 0; fi2= 80;
% fi1=0-для плоскости XOZ,fi2=pi/2-для плоскости YOZ
p=k*dx/2; o=(sind(theta)).*cosd(fi1); o2=(sind(theta)).*cosd(fi2);
p2=k*dy/2;
alfa=p*(o-ksix);
alfa2=p*(o2-ksix);
beta=p2*(o-ksiy);
beta2=p2*(o2-ksiy);
% где alfa и beta -обобщённые аргументы
alfa= deg2rad(alfa); beta = deg2rad(beta);
alfa2 = deg2rad(alfa2); beta2 = deg2rad(beta2);
 
Fp1 = (m*sinc(m*alfa)./sinc(alfa)).*(n*sinc(n*beta)./sinc(beta));
Fp2 = (m*sinc(m*alfa2)./sinc(alfa2)).*(n*sinc(n*beta2)./sinc(beta2));
% где Fp1,2 - множитель направленности антенной решётки
F1=cosd(theta).^8;
% где F1-комплексная векторная хар-ка направленности изотропного излучателя
Dn1=F1.*Fp1;
Dn2=F1.*Fp2;
DnN1 = Dn1/max(max(Dn1));
DnN2 = Dn2/max(max(Dn2));
% Dn1,2- ДН ФАР в плоскости XOZ и YOZ
subplot(2,2,1)
polar(theta*pi/180,DnN1,'r'), grid on
title('ДН ФАР в плоскости XOZ')
 
subplot(2,2,2)
polar(theta*pi/180,DnN2,'b'), grid on
title('ДН ФАР в плоскости YOZ')
 
 
% ДН ФАР в 3D
z = Dn1'*Dn2;
[alfa, beta] = meshgrid(theta);
z=z/max(max(z));
% пререводим из сферических координат в декартовы
[Z,X,Y] = sph2cart(alfa*pi/180, beta*pi/180, z);
subplot(2,2,[3 4])
surf(X,Y,Z,'FaceAlpha',0.5)
%shading interp
xlabel('\alpha')
ylabel('\beta')
zlabel('z')
Вообщем-то не так страшно как оказалось применил перевод из сферической систвемы в декартову sph2cart
(думаю, ты понял, что alfa*pi/180 просто переводит углы в радианы)
Объединил все в одном окне.

*для красоты я уменьшил шаг угла, оставил сетку на поверхности и растянул окно с графиками

**Кроме того ставил угол от -180 до 180, но боковых лепестков не видно
Миниатюры
Графики ДН в 3D  
4
13 / 3 / 0
Регистрация: 20.02.2013
Сообщений: 94
27.02.2013, 13:01  [ТС] 8
Спасибо огромное за помощь!
Сейчас буду долго разбираться с этим кодом...
0
5241 / 3569 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
27.02.2013, 13:08 9
дык, код практически не менялся! просто добавил polar для рисования 2D диаграммы и sph2cart для рисования 3D диаграммы
1
13 / 3 / 0
Регистрация: 20.02.2013
Сообщений: 94
04.03.2013, 18:58  [ТС] 10
Доброго времени суток.
Подскажи пожалуйста, возможно ли в матлабе построить функцию от -9*pi до 9*pi, как на рисунке???
Графики ДН в 3D

Заранее, очень благодарен!

Я тут попытался сделать сам... и почему-то графики получаются до 3
Как правильно задать интервал?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
% Анализ МНАР в главных плоскостях ДН
m=7;
ksix=0;
lym=1;
k=2*pi/lym;
dx=0.7;
p3=k*dx/2;
theta2 = (-1620:1620)/180*pi
alfa3=p3*(sin(theta2)-ksix);
Fp4=sin(m*alfa3);
Fp4=abs(Fp4);
Fp5=sin(alfa3);
Fp5=abs(Fp5);
Fp6=sin(m*alfa3)./m*sin(alfa3);
Fp6=abs(Fp6);
theta2 = theta/pi*180;
plot(alfa3,Fp4,alfa3,Fp5,alfa3,Fp6); grid
Я тут ещё часок голову поломал и сделал сам...
может кому-то код пригодится...
вроде всё соответствует картинке.

Графики ДН в 3D


Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
m=7;
ksix=0;
lym=1;
k=2*pi/lym;
dx=1;
p3=k*dx/2;
alfa3= (-1620:1620)/180*pi;
Fp4=sin(m*alfa3);
Fp4=abs(Fp4);
Fp5=sin(alfa3);
Fp5=abs(Fp5);
Fp6=(sin(m*alfa3))./(m*sin(alfa3));
Fp6=abs(Fp6);
alfa3=m*alfa3/pi*180;
plot(alfa3,Fp4); grid
xlim([-1620 1620])
plot(alfa3,Fp5); grid
xlim([-1620 1620])
plot(alfa3,Fp6); grid
xlim([-1620 1620])
plot(alfa3,Fp4,alfa3,Fp5,alfa3,Fp6); grid
xlim([-1620 1620])
0
1 / 1 / 0
Регистрация: 10.02.2016
Сообщений: 85
13.10.2016, 23:14 11
пожалуй подниму тему)

ХН, а именно ее гр представление ДН в 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
28
29
30
31
32
33
34
35
36
37
38
39
%Определить выражение для ХН АА, слагающейся из круговых поршней с радиусом
%r. Поршни размещены в плоскости XOY. Расстояние между геометрическими
%центрами d. Необходимо рассмотреть пересечения ХН для YOZ. Направление
%копенсации theta=0, phi=90. Использовать теорему умножения.
 
clc
clear
close all
 
N=5; %количество элементов антенны
r=0.075;%радиус элемента
d=0.3; %расстояние между элементами
f=5*10^3; 
c=1500; %среда
k=2*pi*f/c;
d/(c/f)
theta = 0:1:360;
phi = 0:1:360;
 
theta0 = 0 * ones(1,length(theta));
phi0 = 0 * ones(1,length(theta));
 
[theta, phi] = meshgrid (theta, phi);
[theta0, phi0] = meshgrid (theta0, phi0);
 
 
u = k * r.*sqrt( sind(theta).^2 + sind(theta0).^2 - 2.*sind(theta).*sind(theta0).*cosd(phi - phi0) );
Del = abs((2.*besselj(1,u))./u); %ХН одного элемента
 
X = pi*(d/(c/f)).*( sind(theta).*sind(phi) - sind(theta0).*sind(phi0)); %????
Dr = abs(sin(N.*X)./(N.*sin(X))); %ХН решетки (=эквивалентной прямолинейной...)
Del(isnan(Del))=1;
Dr(isnan(Dr))=1;
D = Del .* Dr;
D(isnan(D))=1;
[x, y, z] = sph2cart(deg2rad(theta), deg2rad(phi), D);
figure;
surf(x, y, z)
shading interp
Графики ДН в 3D
Графики ДН в 3D
1
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 4
04.02.2021, 22:22 12
Здравствуйте нужна помощь с моделированием ДН
0
Модератор
Эксперт по математике/физике
5241 / 4027 / 1385
Регистрация: 30.07.2012
Сообщений: 12,282
05.02.2021, 19:40 13
Tipylia, в чем КОНКРЕТНО нужна помощь?
0
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 4
05.02.2021, 23:19 14
Сорян что коннкретно не обозначил проблему del. Нужно смоделировать ДН кольцевой антенной решетки из 5ти элементов монополей на плоской и цилиндрической поверхности поверхнности как коннечной длины так и бесконечной. А так же знает ли кто нибудь как применять диаграмые функционалы для оптимизации ДН антенн?
0
Модератор
1697 / 1550 / 519
Регистрация: 13.09.2015
Сообщений: 5,366
06.02.2021, 06:46 15
Цитата Сообщение от Tipylia Посмотреть сообщение
хотел в личку пообщаться
Правила:
4.12. Не стоит просить или предлагать выслать ответ в icq, e-mail и другие средства общения. Эта просьба все равно не будет выполнена, а сообщение будет отредактировано модератором.
0
06.02.2021, 06:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2021, 06:46
Помогаю со студенческими работами здесь

Графики в С++
Нужно научиться как рисовать графики функций в С++. В частности кубика , то есть кривые третьего...

Графики
Я новичёк в Матлабе, помогите решить задачку: Построить гистограму случайных чисел...

Графики
Помогите пожалуйста! Есть Arduino которая по сигналу от компьютера "OK" выдаёт значение...

Графики
Привет всем,народ помогите плз,нужно написать две программы maple помогите (Завтра зачет( ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru