Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
1298 / 927 / 449
Регистрация: 21.10.2012
Сообщений: 2,604

Генерация пачки ЛЧМ-импульсов, отраженных от цели

21.02.2018, 12:38. Показов 9148. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Сгенерировал пачку из 100 ЛЧМ имульсов (длительность импульса 1 мкс, период 20 мкс):
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fs = 100e6;              % частота дискретизации
tau_imp = 1e-6;          % длительность импульса
t=-tau_imp/2:1/fs:tau_imp/2-1/fs;
T_imp = 20e-6;           % период зондирующего импульса
omega=10e6;              % девиация частоты
Fc = 75e6;               % промежуточная частота
Signal=cos(2*pi*Fc.*t + 2*pi*omega.*t.^2./(2*tau_imp));
ss = [Signal zeros(1,round(fs*T_imp)-length(Signal))];
all = repmat(ss,1,100);
plot(all);
 
FftS=abs(fft(all,fs));% Амплитуды преобразования Фурье сигнала
FftS=2*FftS./fs;% Нормировка спектра по амплитуде
F=0:1:fs/2-1/fs;% Массив частот вычисляемого спектра Фурье
figure;
plot(F,FftS(1:length(F)));% Построение спектра Фурье сигнала
grid on;
Необходимо, зная дальность до цели и её скорость, сформировать пачку отраженных импульсов. Подскажите, как правильно это сделать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2018, 12:38
Ответы с готовыми решениями:

Пачки синусоидальных импульсов
Добрый день! Подскажите как можно в proteus смоделировать синусоидальный сигнал, только чтобы он шел пачками импульсов, то есть - есть...

Программа записи пачки импульсов
Приветствую! Столкнулся со следующей задачей. На ногу микроконтроллера (ATMEGA128 Fраб=14.7456Мгц) приходит сигнал(пачка импульсов ) как...

построение пачки прямоугольных импульсов
как построить то что изображено на рисунке в matlab'е?

7
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
21.02.2018, 14:18
АлександрКом, я так понимаю, что Вам надо проиллюстрировать эффект Доплера? В таком случае - см. здесь.
0
1298 / 927 / 449
Регистрация: 21.10.2012
Сообщений: 2,604
21.02.2018, 16:19  [ТС]
Ну по сути да. Делал тоже для пачки гармонических импульсов и всё хорошо работало:
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
fs = 100e6;              % частота дискретизации
f_carrier = 9e9;         % несущая частота
 
T_imp = 20e-6;           % период зондирующего импульса
tau_imp = 1e-6;          % длительность импульса
N = 500;                 % количество импульсов
 
N_sample_1=round(T_imp*fs);                % Количество отсчетов в одном периоде повторения
N_sample_imp=round(tau_imp*fs);            % Количество отсчетов в одном импульсе
N_sample_signal=N_sample_1*N;              % Количество отсчетов в сигнале
 
distance = 2500;         % параметры цели
velocityRadial = 150;
 
U2pr = zeros(1,N_sample_signal);           % Последовательность отраженных импульсов
 
D = distance + velocityRadial.*T_imp.*(0:N-1); % Нахожу начальные дальности для каждого импульса
tzad_s = 2.*D./c;                              % Задержка в сек
tzad = round(tzad_s.*fs);                      % Задержка в отсчетах
 
t=(0:N_sample_signal-1)*(1/fs);                % Интервал времени сигнала
 
tempSig = cos(2*pi.*Fc.*(t-2*(distance+velocityRadial*(f_carrier./Fc).*t)/c)); % Получил непрерывный сигнал с учетом движения цели
 
for i = 1:N
    % "Вырезаю" из непрерывного сигнала пачку импульсов
    U2pr((i-1)*N_sample_1 + tzad(i) + 1 : 1 : (i-1)*N_sample_1 + tzad(i) + N_sample_imp ) = tempSig((i-1)*N_sample_1 + tzad(i) + 1 : 1 : (i-1)*N_sample_1 + tzad(i) + N_sample_imp);
end
Не понимаю, как сгенерировать непрерывный ЛЧМ сигнал, чтобы можно было также "вырезать" из него потом пачку импульсов

Добавлено через 10 минут
Забыл добавить
Matlab M
1
2
c = physconst('LightSpeed'); % скорость света в вакууме
Fc = 75e6;                    % промежуточная частота
0
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
21.02.2018, 16:28
АлександрКом, я чего то не до конца понимаю... У Вас сейчас вопрос, как сгенерировать последовательность ЛЧМ радиоимпульсов или какой то другой?
0
1298 / 927 / 449
Регистрация: 21.10.2012
Сообщений: 2,604
21.02.2018, 17:48  [ТС]
Цитата Сообщение от R2D2 Посмотреть сообщение
У Вас сейчас вопрос, как сгенерировать последовательность ЛЧМ радиоимпульсов
отраженых от цели - Да

Добавлено через 1 час 6 минут
Оставил начало, в конце сделал вот так:
Matlab M
1
2
3
4
5
6
7
t=(-N_sample_signal/2:1:N_sample_signal/2-1)/fs;
omega=10e6;
tempSig1 = cos(2*pi.*Fc.*(t-2*(distance+velocityRadial*(f_carrier./Fc).*t)/c) + 2*pi.*omega.*((t-2*(distance+velocityRadial*(f_carrier./Fc).*t)/c).^2)/(2*T_imp*N)); % Непрерывный ЛЧМ - сигнал
for i = 1:N
    % "Вырезаю" из непрерывного сигнала пачку импульсов
    U2pr((i-1)*N_sample_1 + tzad(i) + 1 : 1 : (i-1)*N_sample_1 + tzad(i) + N_sample_imp ) = tempSig1((i-1)*N_sample_1 + tzad(i) + 1 : 1 : (i-1)*N_sample_1 + tzad(i) + N_sample_imp);
end
Правильно ли это?
0
1298 / 927 / 449
Регистрация: 21.10.2012
Сообщений: 2,604
26.02.2018, 14:07  [ТС]
Понял, что для ЛЧМ импульсов не получится создать один большой непрерывный сигнал на всю длительность пачки и потом просто вырезать из него в нужных местах отраженные импульсы.

Попробовал другой подход:
Взял за основу формулу ЛЧМ-сигнала:
https://www.cyberforum.ru/cgi-bin/latex.cgi?cos\left({\omega }_{0}t + \frac{\Delta \omega {t}^{2}}{2{t}_{imp}})
timp - длительность импульса.

Предположил, что для отраженных импульсов время t (которое возводится в квадрат и домножается на девиацию) менять не нужно, оно как бы "локальное" и задаю я его от -timp/2 до timp/2. А вот другое t (на которое домножается несущая частота) как раз таки должно меняться в зависимости от момента прихода отраженного импульса (оно как бы "глобальное время"). В результате получил вот такой код
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
fs = 100e6;              % частота дискретизации
f_carrier = 9e9;         % несущая частота
c = physconst('LightSpeed'); % скорость света в вакууме
Fc = 75e6;                    % промежуточная частота
T_imp = 20e-6;           % период зондирующего импульса
tau_imp = 1e-6;          % длительность импульса
N = 500;                 % количество импульсов
 
N_sample_1=round(T_imp*fs);                % Количество отсчетов в одном периоде повторения
N_sample_imp=round(tau_imp*fs);            % Количество отсчетов в одном импульсе
N_sample_signal=N_sample_1*N;              % Количество отсчетов в сигнале
 
distance = 2500;         % параметры цели
velocityRadial = 501;
 
U2pr = zeros(1,N_sample_signal);           % Последовательность отраженных импульсов
 
D = distance + velocityRadial.*T_imp.*(0:N-1); % Нахожу начальные дальности для каждого импульса
tzad_s = 2.*D./c;                              % Задержка в сек
tzad = round(tzad_s.*fs);                      % Задержка в отсчетах
 
omega=10e6;
 
t = -tau_imp/2:1/fs:tau_imp/2-1/fs;
for i = 1:N
% Нахожу время приема очередного отраженного импульса    
t2 = tzad_s(i):1/fs:tzad_s(i)+tau_imp-1/fs;
% Заполняю нужные места в отраженном сигнале 
U2pr((i-1)*N_sample_1 + tzad(i) + 1 : 1 : (i-1)*N_sample_1 + tzad(i) + N_sample_imp ) = cos(2*pi.*Fc.*(t2-2*(distance+velocityRadial*(f_carrier./Fc).*t2)/c) + 2*pi.*omega.*t.^2/(2*tau_imp));
end
 
FftS=abs(fft(U2pr,fs));% Амплитуды преобразования Фурье сигнала
FftS=2*FftS./fs;% Нормировка спектра по амплитуде
F=0:1:fs/2-1/fs;% Массив частот вычисляемого спектра Фурье
figure;
plot(F,FftS(1:length(F)));% Построение спектра Фурье сигнала
grid on;
Но спектр опять не тот, что ожидал. Предполагалось, что спектр будет просто смещаться на величину частоты Доплера (https://www.cyberforum.ru/cgi-bin/latex.cgi?2\upsilon /\lambda ), но этого не происходит, да и к тому же спектр ещё и искажается (в сравнении со случаем v = 0).
Подскажите, в чем ошибка?
0
533 / 438 / 47
Регистрация: 17.07.2013
Сообщений: 2,236
26.02.2018, 15:37
Цитата Сообщение от АлександрКом Посмотреть сообщение
спектр будет просто смещаться на величину частоты Доплера
chirp
https://www.mathworks.com/help... tid=doc_ta
0
1298 / 927 / 449
Регистрация: 21.10.2012
Сообщений: 2,604
27.02.2018, 15:14  [ТС]
Переделал с chirp. Какие мысли - изначально сигнал занимал полосу частот от 70 до 80 Мгц. Из-за эффекта Доплера частота принимаемых импульсов будет в диапазоне [70,80]-https://www.cyberforum.ru/cgi-bin/latex.cgi?2\upsilon/\lambda. При скорости цели 500 м/с и частоте сигнала 9 ГГц смещение составит 30 кГц. Время для chirp задавал от 0 до длительности импульса, начальую фазу сигнала задавал https://www.cyberforum.ru/cgi-bin/latex.cgi?-2F{D}_{0}/c, где F = 75 МГц, https://www.cyberforum.ru/cgi-bin/latex.cgi?{D}_{0} - начальная дальность до цели, = 2500 м.
Matlab M
1
2
3
4
5
6
t2=0:1/fs:tau_imp-1/fs;
for i = 1:N
U2pr((i-1)*N_sample_1 + tzad(i) + 1 : 1 : (i-1)*N_sample_1 + tzad(i) + N_sample_imp ) = ...
    chirp(t2, Fc*(1-2*velocityRadial*(f_carrier./Fc)/c)-omega/2, t2(end), Fc*(1-2*velocityRadial*(f_carrier./Fc)/c)+omega/2, ...
    'linear', -Fc*2*distance/c);
end
Но всё равно спектр отказывается смещаться на величину https://www.cyberforum.ru/cgi-bin/latex.cgi?2\upsilon/\lambda и всё также искажается в сравнении со случаем v = 0. Что не так задал?

Добавлено через 3 часа 25 минут
Кажется, нашел решение:
Matlab M
1
2
3
4
5
6
7
t = -tau_imp/2 : 1/fs : tau_imp/2-1/fs;
t2=0 : 1/fs : tau_imp-1/fs;
for i = 1:N
U2pr((i-1)*N_sample_1 + tzad(i) + 1 : 1 : (i-1)*N_sample_1 + tzad(i) + N_sample_imp ) = ...
    cos(2*pi.*Fc.*t2 + 2*pi.*f_carrier.*2./c.*(distance - velocityRadial.*T_imp.*(i-1)) + ...
    2*pi.*omega.*t.^2/(2*tau_imp));
end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2018, 15:14
Помогаю со студенческими работами здесь

Непериодическая пачка ЛЧМ-импульсов
Добрый день! Помогите, пожалуйста, разобраться. Необходимо создать непериодическую последовательность ЛЧМ-импульсов. Создала отдельно один...

Не симметричный спектр ЛЧМ сигнала серии из 5 импульсов
Пытаюсь построить спектр ЛЧМ сигнала, для единичного импульса всё получается хорошо и спектр, и акф, и вкф строятся как нужно. Но когда...

Генерация импульсов
Здравствуйте! Помогите пожалуйста с генерацией импульсов на atmega8. ( Какой таймер использовать и в каком режиме, прерывания и тд, одним...

Генерация NLP импульсов
Добрый день. Необходимо в сеть Ethernet (стандарт 10Base-T) посылать NLP импульсы (Normal Link Pulse), которые дают понять другой...

[CoDeSys] Сформировать заданное число импульсов
Здравствуйте, товарищи. В целях образования, пишу под ПЛК ОВНО, на Codesys. Возникла задачка - есть дискретный выход, с прицепленной...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru