Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
-8 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 13
Matlab 2017

Программа для расчета высоты рельефа

23.12.2019, 22:41. Показов 656. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу программу для расчета высоты рельефа. Вот код:
Кликните здесь для просмотра всего текста
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
clear all
D0=5000; %dalnost nabludenia
B=0.8; %razmer bazi interferometra 
lambda=0.008; %dlina volni 
ug2=1.5708; %ogol nablyudeniya
v=55.5; %skorost LA 
H0=200; %visota LA
h=200;
c=3.*10^8; %skorost sveta 
deltafc=(2*v)/B; %shirina spektra 
Fs=2*deltafc; %chastota diskretizacii 
t = 0:1/Fs:1; 
omega=2*pi*Fs; %krogovaya chastota 
S0n=exp(1i*2*pi*Fs*t); %izluchaemiy signal 
R1n=sqrt(D0*D0+(H0+B/2-h).^2); %dalnost 1 
R2n=sqrt(D0*D0+(H0-B/2-h).^2); %dalnost 2 
fi1=(4.*pi/lambda)*R1n; %faza pervogo signala 
fi2=(4.*pi/lambda)*R2n; %faza vtorogo signala 
dfi = fi2-fi1; % ishodnaya raznost faz 
S1n=exp(1i*(2*pi*Fs*t+fi1));%perviy prinimaemiy signal
S2n=exp(1i*(2*pi*Fs*t+fi2));%vtoroy prinimaemiy signal  na dlitelnosti impulsa
Int1 = sum(S1n.*S0n);%integr proizvedenie s opornim signalom 
Int2 = sum(S2n.*S0n); 
F1 = atan2(imag(Int1),real(Int1)) %vichislenie fazi pervogo signala 
F2 = atan2(imag(Int2),real(Int2)) %vichislenie fazi vtorogo signala 
dF = F2-F1 % naidennaya raznost faz 
dfi=lambda*dF/(4*pi*B);
%  ugolfi=(((lambda.*lambda)*(dF.*dF))/(8.*pi.*pi.*D0.*B))-((lambda.*dF)/2.*pi.*B)-(B/2.*D0) %ugol 
h=H0-D0.*cos(dfi+ug2) %visota reliefa
% L=imread('ice_water_1.jpg');%import rli
% %figure, imshow(L);%pokaz izobrajenia 1
% L1=imnoise(L,'gaussian');%priminenie BGSH
% figure, imshow(L1);%pokaz izobrajenia 1 s shumom
% L2=imread('ice_water_2.jpg');%import rli
% % figure, imshow(L1);%pokaz izobrajenia 2
% L3=imnoise(L2,'gaussian');%priminenie BGSH
% figure, imshow(L3);%pokaz izobrajenia 2 s shumom
Ltest1=imread('ice_water_test.jpg'); %schitivaem izobrajenie iz faila
Ltest2=double(Ltest1)./255; %poluchaem trehmerniy massiv
Ltest3=rgb2gray(Ltest2); %preobrazovanie iz cvetnogo izobrajenia v chb
imwrite(Ltest3,'ice_water_test_1.jpg'); %sohranenie kartinki v fail
dlmwrite('ice_water_test1.txt',Ltest3); %sohranenie massiva v textoviy fail
mAmp=dlmread('ice_water_test1.txt'); %massiv iz textovogo faila
deltaR=20; %%razreshaushaya sposobnost po dalnosti
deltaLaz=50; %razreshaushaya sposobnost po azimutu
zkv=200.4; %visota pervoy antenni
zkn=199.6; %visota vtoroy antenni
fi=unifrnd(-pi,pi,50,50); %ravnomernoe raspredelenie fazi
M=25;
N=25;
% M=5; N=5; % размерность массивов
Ai=6; Aw=1; % амплитуды льда и воды
 
% Ice=[0 0 0 0 0;       % матрица ледового РїРѕРєСЂРѕРІР°
%      0 0 0 0 0;
%      0 0 1 0 0;
%      0 0 0 0 0;
%      0 0 0 0 0];
 
 dAw=0.05; dAi=1;   % разброс значений амплитуды РІРѕРґС‹ Рё льда
 A=zeros(M,N);
 
 for m=1:M      % формирование массива амплитуд
     for n=1:N
         if mAmp(m,n)==1
             A(m,n)=unifrnd(Ai-dAi,Ai+dAi,1,1);
         else
             A(m,n)=unifrnd(Aw-dAw,Aw+dAw,1,1);
         end;
     end;
 end;
 
figure(1); surf(mAmp); grid on; colormap gray; title('Ice');
figure(2); surf(A); grid on; colormap gray; title('Amplitude');
Nots=500; %chislo impulsov
Amp=Ai/Aw
Timp=0.00036; %period povtoreniya impulsov
z=unifrnd(-0.05,0.05,25,25); %visota poverhnosti 
x0=-250; %koordinata X LA 
for m=1:M 
   for n=1:N
        k=1:Nots;
        xk=(x0+k); %traektoria po X
        yk=0; %koordinata Y LA
        x(m,n)=x0; %koordinati tochek poverhnosti
        y(m,n)=250+(m-1)*deltaR;
        R1(n,k)=sqrt((xk(1,k)-x(m,n)).^2+(yk-y(m,n)).^2+(zkv-z(m,n)).^2); %verhnyaya antenna
        S1(n,k)=Amp.*exp((1i.*4.*pi/lambda).*R1(n,k)+1i.*fi(m,n));
        S1(m,k)=sum(S1(n,k));  
        R2(n,k)=sqrt((xk(1,k)-x(m,n)).^2+(yk-y(m,n)).^2+(zkn-z(m,n)).^2); %nignyaya antenna 
        S2(n,k)=Amp.*exp((1i.*4.*pi/lambda).*R2(n,k)+1i.*fi(m,n));
        S2(m,k)=sum(S2(n,k)); 
 end;
end;
 
Dk(k)=(v.^2.*(Timp*k).^2)./(2*D0);
hsv(k)=exp((-1i.*4.*pi/lambda)*Dk(k)); %opornaya funkcia
%svertka
svertka1=convn(hsv(k),S1(m,k)); %svertka pervogo signala
svertka2=convn(hsv(k),S2(m,k)); %svertka vtorogo signala
 
%obrabotka RLI 1
SS1nakmod=abs(svertka1); %amplituda RLI1
SS1real=real(svertka1); %deystvitelnaya chast
SS1imag=imag(svertka1); %mnimaya chast
SS1arg=atan(SS1imag./SS1real); %faza RLI1
%obrabotka RLI 2
SS2nakmod=abs(svertka2); %amplituda RLI1
SS2real=real(svertka2); %deystvitelnya chast
SS2imag=imag(svertka2); %mnimaya chast
SS2arg=atan(SS2imag./SS2real);%faza RLI2
 
%pereshet v visotu
raznArg=SS2arg-SS1arg;%raznosti 
dfif=lambda.*raznArg/(4*pi*B);
hfinal=H0-D0.*cos(dfif+ug2) %visota reliefa

Проблема в том, что финальный результат получается в виде массива 1x999, а должно быть 25х25, то есть как размер исходного тестового изображения. Подозреваю,что проблема начинается со свертки, но исправить никак не получается.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2019, 22:41
Ответы с готовыми решениями:

Программа для расчета объемных весов
Задача: из указанного элемента матрицы двигаться вверх по строчкам, пока не будет достигнуто значение не равное 0. Перемножить его с...

Программа для расчета по методу главных компонент
function = pcanipals( X, numberPC ) %UNTITLED5 Summary of this function goes here % Detailed explanation goes here = size(X); P=;...

Линейная программа для нахождения площади и высоты параллелограмма
Люди помогите плиззз! Как сделать эту программу? Буду очень очень Вам признателен!

2
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
24.12.2019, 02:03
Ну и хто будет это читать? МОжете вкратце изложить? Проблема, суть?
0
-8 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 13
24.12.2019, 09:15  [ТС]
Почистил немного код.
Кликните здесь для просмотра всего текста
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
clear all
D0=5000; %dalnost nabludenia
lambda=0.008; %dlina volni 
v=55.5; %skorost LA 
H0=200; %visota LA
B=0.8; %razmer bazi interferometra 
ug2=1.5708; %ogol nablyudeniya
Ltest1=imread('ice_water_test.jpg'); %schitivaem izobrajenie iz faila
Ltest2=double(Ltest1)./255; %poluchaem trehmerniy massiv
Ltest3=rgb2gray(Ltest2); %preobrazovanie iz cvetnogo izobrajenia v chb
imwrite(Ltest3,'ice_water_test_1.jpg'); %sohranenie kartinki v fail
dlmwrite('ice_water_test1.txt',Ltest3); %sohranenie massiva v textoviy fail
mAmp=dlmread('ice_water_test1.txt'); %massiv iz textovogo faila
deltaR=20; %%razreshaushaya sposobnost po dalnosti
deltaLaz=50; %razreshaushaya sposobnost po azimutu
zkv=200.4; %visota pervoy antenni
zkn=199.6; %visota vtoroy antenni
fi=unifrnd(-pi,pi,25,25); %ravnomernoe raspredelenie fazi
M=25;
N=25;
 
Ai=6; Aw=1; % амплитуды льда и воды
 
 
 
 dAw=0.05; dAi=1;   % разброс значений амплитуды РІРѕРґС‹ Рё льда
 A=zeros(M,N);
 
 for m=1:M      % формирование массива амплитуд
     for n=1:N
         if mAmp(m,n)==1
             A(m,n)=unifrnd(Ai-dAi,Ai+dAi,1,1);
         else
             A(m,n)=unifrnd(Aw-dAw,Aw+dAw,1,1);
         end;
     end;
 end;
 
figure(1); surf(mAmp); grid on; colormap gray; title('Ice');
figure(2); surf(A); grid on; colormap gray; title('Amplitude');
Nots=500; %chislo impulsov
Amp=Ai/Aw
Timp=0.00036; %period povtoreniya impulsov
z=unifrnd(-0.05,0.05,25,25); %visota poverhnosti 
x0=-250; %koordinata X LA 
for m=1:M 
   for n=1:N
        k=1:Nots;
        xk=(x0+k); %traektoria po X
        yk=0; %koordinata Y LA
        x(m,n)=x0; %koordinati tochek poverhnosti
        y(m,n)=250+(m-1)*deltaR;
        R1(n,k)=sqrt((xk(1,k)-x(m,n)).^2+(yk-y(m,n)).^2+(zkv-z(m,n)).^2); %verhnyaya antenna
        S1(n,k)=Amp.*exp((1i.*4.*pi/lambda).*R1(n,k)+1i.*fi(m,n));
        S1(m,k)=sum(S1(n,k));  
        R2(n,k)=sqrt((xk(1,k)-x(m,n)).^2+(yk-y(m,n)).^2+(zkn-z(m,n)).^2); %nignyaya antenna 
        S2(n,k)=Amp.*exp((1i.*4.*pi/lambda).*R2(n,k)+1i.*fi(m,n));
        S2(m,k)=sum(S2(n,k)); 
 end;
end;
 
Dk(k)=(v.^2.*(Timp*k).^2)./(2*D0);
hsv(k)=exp((-1i.*4.*pi/lambda)*Dk(k)); %opornaya funkcia
%svertka
svertka1=convn(hsv(k),S1(m,k)); %svertka pervogo signala
svertka2=convn(hsv(k),S2(m,k)); %svertka vtorogo signala
 
 
%obrabotka RLI 1
SS1nakmod=abs(svertka1); %amplituda RLI1
SS1real=real(svertka1); %deystvitelnaya chast
SS1imag=imag(svertka1); %mnimaya chast
SS1arg=atan(SS1imag./SS1real); %faza RLI1
%obrabotka RLI 2
SS2nakmod=abs(svertka2); %amplituda RLI1
SS2real=real(svertka2); %deystvitelnya chast
SS2imag=imag(svertka2); %mnimaya chast
SS2arg=atan(SS2imag./SS2real);%faza RLI2
 
%pereshet v visotu
raznArg=SS2arg-SS1arg;%raznosti 
dfif=lambda.*raznArg/(4*pi*B);
hfinal=H0-D0.*cos(dfif+ug2) %visota reliefa


Принцип работы программы следующий. Программа анализирует тестовое изображение и получает массив, где 1-это поверхность ледника, 0 - воды. Далее записываются значения амплитуд для каждой точки поверхности. Затем траекторный сигнал и его обработка. В конце программа должна выдать массив значений высоты поверхности (льда и воды) для каждой точки изображения, но выдает массив с одним тем же значением.Размер массива зависит от размера изображения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.12.2019, 09:15
Помогаю со студенческими работами здесь

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

Программа для расчета по заданным размерам для шара, призмы, цилиндра.
Программа для вычета по заданным размерам для шара,призмы,цилиндра. И составить алгоритм к ней

Программа для расчета дистанции
Здравствуйте. Проблема вот в чем, мы вводим данный в градусах (направление) и морских милях (дстанция) и узлах (скорость). А в программе...

Программа для расчета по формулам
Помогите пожалуйста с решением. Нужно написать программу, которая производит расчет по формулам, с использованием операторов циклов for и...

Программа для расчета энергии
Народ помогите разобраться в чем дело. Вроде программа написана правильно, но работает не корректно. Компилил в dev c++. Привожу текст...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 01.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 31.01.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 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru