Проблемы, как всегда, в мелочах:
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