|
Моделирование УКВ канала |
|
|
|
Mar 3 2013, 16:57
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
CODE clear all; close all; clc;
% Коэффициент ослабления лучей r = [0.057662, 0.176809, 0.407163, 0.303585, 0.258782, ... 0.061831, 0.150340, 0.051534, 0.185074, 0.400967, ... 0.295723, 0.350825, 0.262909, 0.225894, 0.170996, ... 0.149723, 0.240140, 0.116587, 0.221155, 0.259730;];
% Задержка лучей tau = [1.003019, 5.422091, 0.518650, 2.751772, 0.602895, ... 1.016585, 0.143556, 0.153832, 3.324866, 1.935570, ... 0.429948, 3.228872, 0.848831, 0.073883, 0.203952, ... 0.194207, 0.924450, 1.381320, 0.640512, 1.368671;] * 1e-6;
SNR = 20; % Отношение сигнал шум в дБ NumBlock = 100; % Колличество символов прошедших через канал SamplesRate = (2.5e6/3)*8/5; % Частота передискретизированного сигнала NumCarriers = 533; % Колличество несущих FFTLength = 3000; % Колличество отсчетов полезной части сигнала GuardLength = 375; % Колличество отсчетов защитной части сигнала
% Расчет Доплеровского смещения FreqCarrier = 108e6; % Несущая сигнала Speed = 200e3/3600; % Скорость движения приемника относительно передатчика c = 300e6; % Скорость света DopplerShift = FreqCarrier*Speed/c; % Максимальный доплеровский сдвиг
SampleTime = 1/SamplesRate; % Период дискретизации сигнала DelayVector = tau; GainVector = 10*log10®; % Коэффициент ослабления лучей в дБ scale = 1./sqrt(sum(r.^2));
ChanObj = rayleighchan(SampleTime,DopplerShift,DelayVector,GainVector); ChanObj.ResetBeforeFiltering = 1; ChanObj.NormalizePathGains = 1; ChanObj.StorePathGains = 0; ChanObj.DopplerSpectrum = doppler.gaussian(DopplerShift/2); ChanObj.StoreHistory = 1;
M=4; k=log2(M); H_QAM4=modem.qammod('M',M,'PhaseOffset', 0, 'SymbolOrder',... 'binary', 'InputType', 'bit'); hDeMod = modem.qamdemod(H_QAM4);
data = []; for n = 1:NumBlock Input_Data = randint(k*NumCarriers,1,2); QAM_tx = modulate(H_QAM4,Input_Data);
Symbol = ifft([QAM_tx(ceil(NumCarriers/2)+1:NumCarriers);complex(zeros(FFTLength-NumCarriers,1),zeros(FFTLength-NumCarriers,1));... QAM_tx(1:ceil(NumCarriers/2))]); SymbolCP = [Symbol(FFTLength-GuardLength+1:FFTLength);Symbol]; OutputBlock = filter(ChanObj, SymbolCP); OutputBlock = awgn(OutputBlock, SNR+10*log10(k)-10*log10(1),'measured'); Symbol = fft(OutputBlock(GuardLength+1:FFTLength+GuardLength)); QAM_rx(1,1:ceil(NumCarriers/2)) = Symbol(FFTLength - ceil(NumCarriers/2)+1:FFTLength); QAM_rx(1,ceil(NumCarriers/2):NumCarriers) = Symbol(1:ceil(NumCarriers/2));
end
plot(linspace(0,SamplesRate,3375), 20*log10(abs(fft(SymbolCP)))); grid on; %plot(ChanObj); Все ли я правильно сделал? SampleTime это период дискретизации сигнала или что то другое? как проверить правильность модели? Есть ли в матлабе какиенить теоретические расчеты ПХ канала?
Сообщение отредактировал Ivan55 - Mar 4 2013, 06:24
|
|
|
|
|
Mar 5 2013, 11:58
|
Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639

|
Цитата(Ivan55 @ Mar 3 2013, 20:57)  Все ли я правильно сделал? Нет. Надо просто в Симулинке открыть подходящую модель и злобно её заюзать. Всё уже придумали до нас, причём по нескольку раз.
|
|
|
|
|
Mar 6 2013, 03:59
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Kluwert @ Mar 5 2013, 14:58)  Надо просто в Симулинке открыть подходящую модель и злобно её заюзать. Например?
|
|
|
|
|
Mar 6 2013, 08:18
|
Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639

|
Цитата(Ivan55 @ Mar 6 2013, 07:59)  Например? Сорри, чего-то я вчера злой слишком был. А по моделям - пожалуйста: открываете Communication Systems/channels. Там вам пожалуйста, и просто AWGN и многолучёвый с замираниями и т.д. Готовые системы уже вместе с каналом есть, например, DVB целиком расписана (вроде ваш диапазон). Я вам советую, всё-таки, моделировать системы связи, ибо там важны вопросы синхронизации в симулинке: удобно и наглядно. Но дело ваше.
|
|
|
|
|
Mar 7 2013, 04:15
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Kluwert @ Mar 6 2013, 11:18)  Сорри, чего-то я вчера злой слишком был. Ниче такого не заметил)) Цитата(Kluwert @ Mar 6 2013, 11:18)  ...DVB целиком расписана (вроде ваш диапазон). Я вам советую, всё-таки, моделировать системы связи, ибо там важны вопросы синхронизации в симулинке: удобно и наглядно. Но дело ваше. Да это DVB-T. Спасибо за подсказку, буду смотреть разбираться)
|
|
|
|
|
Mar 11 2013, 04:01
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Kluwert @ Mar 6 2013, 11:18)  Готовые системы уже вместе с каналом есть, например, DVB целиком расписана А где можно взять эту модельку с каналом, о которой вы говорите, у вас есть ссылка на нее, или подскажите где ее можно найти?
|
|
|
|
|
Mar 11 2013, 09:17
|
Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639

|
Цитата(Ivan55 @ Mar 11 2013, 08:01)  А где можно взять эту модельку с каналом, о которой вы говорите, у вас есть ссылка на нее, или подскажите где ее можно найти? Так в демосах к communication toolbox. Если он у вас стоит (и Симулинк, есстественно, тоже) просто наберите в командном окне матлаба commdvbc и сразу в модель нужную попадёте. Ой, сорри, commdvbt, вам же terrestrial вроде нужен.
Сообщение отредактировал Kluwert - Mar 11 2013, 09:19
|
|
|
|
|
Mar 11 2013, 10:09
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(Kluwert @ Mar 11 2013, 12:17)  Так в демосах к communication toolbox. Если он у вас стоит (и Симулинк, есстественно, тоже) просто наберите в командном окне матлаба commdvbc и сразу в модель нужную попадёте.
Ой, сорри, commdvbt, вам же terrestrial вроде нужен. Так то да)) я ее и нашел) но там модель с AWGN, а я думал вы мне говорите про модель DVB c каналами Райса и Релея) Но все равно спасибо) вот только встроенные функции матлаба релея и райса не подойдут для моделирования, так как DVB стандарт оговаривает требования на канал с 20 лучами и 20 фиксированными фазами лучей, а встроенные матлабовские Райса и Релея эти фазы сами крутят, и стационарными их не задают)) Так что писать придется модель кканала ручками. Вопрос: "Как можно сделать задержку луча на дробное колл-во отсчетов?" Кто нить делал модель канала DVB-T? подскажите хотябы)
Сообщение отредактировал Ivan55 - Mar 11 2013, 12:26
|
|
|
|
|
Mar 12 2013, 05:57
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(ser_aleksey_p @ Mar 11 2013, 21:13)  Попробуйте посмотреть в ADS и SV. Что за ADS и SV?
|
|
|
|
|
Mar 12 2013, 06:47
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 10-04-09
Из: Омск
Пользователь №: 47 461

|
Цитата(Ivan55 @ Mar 11 2013, 16:09)  Вопрос: "Как можно сделать задержку луча на дробное колл-во отсчетов?" Дробная задержку можно сделать с помощью фильтра Фэрроу (Farrow), только надо смотреть чтоб ширина спектра сигнала не сильно искажалась фильтром, который имеет завал на ВЧ и максимален при задержке 0.5 периода дискретизации. Т.е. надо что бы частота дискретизации была с запасом в несколько раз, а не в притык по Котельникову. АЧХ фильтра Фэрроу можно глянуть у Незами, ну или я могу выложить если нужно. Если реализация в Simulink то посмотрите модели по ссылке. Там реализуется дробная задержка в петле символьной синхронизации. Если вы работаете только с m-файлами, то смотрите в help матлаба, там есть какой-то Farrow filter.
|
|
|
|
|
Mar 12 2013, 08:40
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640

|
Цитата(STAR_IK @ Mar 12 2013, 09:47)  Дробная задержку можно сделать с помощью фильтра Фэрроу (Farrow), только надо смотреть чтоб ширина спектра сигнала не сильно искажалась фильтром, который имеет завал на ВЧ и максимален при задержке 0.5 периода дискретизации. Т.е. надо что бы частота дискретизации была с запасом в несколько раз, а не в притык по Котельникову. АЧХ фильтра Фэрроу можно глянуть у Незами, ну или я могу выложить если нужно. Если реализация в Simulink то посмотрите модели по ссылке. Там реализуется дробная задержка в петле символьной синхронизации. Если вы работаете только с m-файлами, то смотрите в help матлаба, там есть какой-то Farrow filter. Да спасибо) я уже нашел, но там fracdelay который как раз и использует Farrow filter
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|