реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Моделирование эффекта Доплера в КВ-канале без использования встроенных функций MATLAB.
Виктор39
сообщение Apr 5 2013, 08:00
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542



Спасибо andyp.

можете показать в чем ошибка? даже при Doppler_spread = 0 вносятся искажения в сигнал.
Прикрепленный файл  Chan.rar ( 661 байт ) Кол-во скачиваний: 68


Go to the top of the page
 
+Quote Post
СФТКСР
сообщение Apr 5 2013, 08:58
Сообщение #17





Группа: Новичок
Сообщений: 9
Регистрация: 17-03-13
Пользователь №: 76 064



Цитата(Виктор39 @ Apr 5 2013, 11:00) *
Спасибо andyp.

можете показать в чем ошибка? даже при Doppler_spread = 0 вносятся искажения в сигнал.
Прикрепленный файл  Chan.rar ( 661 байт ) Кол-во скачиваний: 68


Часть Вашего кода:
Код
        % Doppler shift
        path = A(j)*exp(1i*2*pi*t*Doppler_shift(j)).*WhiteNoise';

        Sig = path.*SigOut;
        SignalOutChan = SignalOutChan + Sig;


Попробуйте убрать из строчки "Sig = path.*SigOut;" умножение на "path". Сигнал тут же примет более красивый не искаженный вид.
Дело в том, что Doppler Shift сам по себе является модуляцией сигнала.


Для примера можно привести следующий код:
Код
%% ***** Инициализация начальных параметров сигнала ****
       Fs=20; %<--- Частота дискретизации;
       f=5;    %<--- Частота сигнала;
       t=0:1/Fs:5; %<--- Время;
%% **************************************************
%%
%% *********** Формирование сигнала ******************
       y=sin(2*pi*t*f); %<--- Исходный сигнал;
%% **************************************************
%%
%%
%% ******* Перевод в частотную область *************
       FF=fft(y);
%% **************************************************
%%
%%
%% ************ Простой сдвиг спектра на 10 шагов ********
       FF2=circshift(FF,[0 10]);
%% **************************************************
%%
%%
%% ******** Перевод во временную область ***************
       y2=ifft(FF2);
%% **************************************************
%%
%%
%% ********* Построение графиков **********************
%   1. График исходного сигнала:    
%       1.1. Построение графика:
                subplot(1,2,1);
                plot(t,y);
%       1.2. Настройка графика:
                title('Исходный сигнал');
%   2. График принятого сигнала:    
%       2.1. Построение графика:
                subplot(1,2,2);
                plot(t,y2);
%       1.2. Настройка графика:
                title('Принятый сигнал после сдвига спектра');
%% ***************************************************


Сообщение отредактировал СФТКСР - Apr 5 2013, 08:59


--------------------
С уважением,
СФТКСР
Go to the top of the page
 
+Quote Post
andyp
сообщение Apr 5 2013, 09:49
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Проблемы, как всегда, в мелочах:

1. забыл на усиление умножить в ветке с 0
Код
       if(Delay(j)>0)
            k_integ = fix(Delay(j)/ts);
            SigOut = [zeros(1,k_integ - 1),SigIn(1:end-k_integ+1)]*A(j);
        else
            SigOut = SigIn*A(j);
        end


2. нормировка - фильтр действительный
вместо
Код
coeffs = c./(real(c).*real(c)+imag(c).*imag(c));

надо:
Код
coeffs = c./(sqrt(sum(c.*c)));


Посмотри на ИХ фильтра - должен быть гауссовский колокол

3.
Код
        WhiteNoise =  filter(coeffs,1,WhiteNoise);

Тут надо бы состояние фильтра набить отсчетами шума перед фильтрацией (ну или побольше шума генерить и брать хвост)

4. с Doppler_spread = 0 к сожалению нормально работать не будет. Нужно отслеживать отдельным if и вместо выхода фильтра использовать единички (возможно, умноженные на exp(j*phi)). Здесь phi - случайный сдвиг фазы. Рассчитывается один раз при инициализации модели

5. PS - зачем-то еще раз на усиление умножаешь -
Код
path = A(j)*exp(1i*2*pi*t*Doppler_shift(j)).*WhiteNoise';


Сообщение отредактировал andyp - Apr 5 2013, 09:50
Go to the top of the page
 
+Quote Post
Виктор39
сообщение Apr 5 2013, 10:18
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542



спасибо.
Цитата
Посмотри на ИХ фильтра - должен быть гауссовский колокол


гауссовский колокол не получается. имеем следующую ИХ фильтра

Прикрепленный файл  Imp.rar ( 11.94 килобайт ) Кол-во скачиваний: 69
Go to the top of the page
 
+Quote Post
andyp
сообщение Apr 5 2013, 10:33
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Виктор39 @ Apr 5 2013, 14:18) *
спасибо.


гауссовский колокол не получается. имеем следующую ИХ фильтра

Прикрепленный файл  Imp.rar ( 11.94 килобайт ) Кол-во скачиваний: 69

fig мой Octave не жрет. У тебя там еще sqrt вместо моих sqr.
попробуй это -
Код
clear;

Fs = 500;
Doppler_spread = 1;
L = 128;

win = hamming(2*L);
c = zeros(1,2*L);
coeff = -4.0*(pi*Doppler_spread/Fs)^2;

for  i=1:L
                tmp = win(L+i) * exp(coeff*(i+0.5)^2);
                c(L+i) = tmp;
                c(L-(i-1)) = tmp;    
end

coeffs = c./norm(c);

plot(coeffs);


И колокол появится.
Go to the top of the page
 
+Quote Post
Виктор39
сообщение Apr 5 2013, 10:55
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542



спасиб andyp. все работает.
Go to the top of the page
 
+Quote Post
Виктор39
сообщение Apr 16 2013, 11:15
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 8-02-13
Из: Минск
Пользователь №: 75 542



не подскажете, из каких соображений выбирается величина L. я думал, что L определяет всего лишь количество коэффициентов, т.е. точность вычисления. эмпирически вижу, что от величины L зависит частота изменения амплитуды сигнала.
Go to the top of the page
 
+Quote Post
andyp
сообщение Apr 16 2013, 15:36
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Чем уже у Вас спектр Доплера относительно частоты дискретизации, тем шире колокол во временной области, и, соответственно, тем длиннее нужен фильтр.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 18:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016