Modulacja i generowanie szumu
|
Forum MATLAB Strona Główna->
Telekomunikacja
|
|
|
AUTOR:
ViP3R
Dołączył: 07 Gru 2009
Posty: 1
|
Witam.
Proszę o pomoc w napisaniu a dokładnie zmodyfikowaniu następującego kodu:
Kod: |
 clear all;
 close all;
 fs=8000;
 fc=100;
 fd=25;

 N=8;
 x=randint(300,1,N);
 y=dmod(x,fc,fd,fs,'psk',N);
 SZUM=[-100:10]/10;
 for numer_SZUM=1:length(SZUM);
 A=SZUM(numer_SZUM);
 yszum=awgn(y,A);
 yszum_zdem=ddemod(yszum,fc,fd,fs,'psk',N);
 [w1 w2]=biterr(x,yszum_zdem);
 hold on
 plot(A,w2,'o');
 end |
Kod powyżej działa prawidłowo i wyświetla wykres w2 (stosunek bitów dobrych do złych) w funkcji odstępu sygnał/szum którego poszczególne wartości pobierane są z wektora SZUM a następnie kolejno podstawiane do zmiennej A
Problem w tym, że funkcja awgn wprowadza szum do sygnału y w dość losowy sposób.
Pomyślałem, że w głównej pętli for stworzę kolejną, która dla każdej wartości A policzy przykładowo 20 razy yszum a następnie uśredni otrzymane wyniki i dopiero podstawi średnią do następnej zmiennej. Coś ala:
Kod: |
 clear all;
 close all;
 fs=8000;
 fc=100;
 fd=25;

 N=8;
 x=randint(300,1,N);
 y=dmod(x,fc,fd,fs,'psk',N);
 SZUM=[-100:10]/10;
 for numer_SZUM=1:length(SZUM);
 A=SZUM(numer_SZUM);
 %----------------------------------------------------------
 zmienna=[1:20];
 for
 numer_zmienna=1:length(zmienna);
 yszum=awgn(y,A);
 end
 yszum_srednia = %coś co policzy średnią z 20-stu wartosci yszum dla danego A
 %----------------------------------------------------------
 yszum_zdem=ddemod(yszum_srednia,fc,fd,fs,'psk',N);
 [w1 w2]=biterr(x,yszum_zdem);
 hold on
 plot(A,w2,'o');
 end |
Niestety zmienna yszum jest wektorem (chyba) z ogromną ilością danych.
Kilkakrotnie ręcznie wpisałem yszum=awgn(y,A); dla tej samej wartości A w matlabie. Następnie zapisałem wynik komendą save('temp3.txt', 'yszum', '-ascii'). Po każdorazowym zapisaniu do pliku otrzymuję 96000 różnych wartości. Jeśli mam yszum traktować jako wektor to po wykonaniu wewnętrznej pętli 20 razy otrzymuje 20 wektorów 69000-elementowych. Trzeba więc chyba zsumować pierwsze elementy z każdego wektora i policzyć średnią, następnie drugie 20 elementów, trzecie i tak 96000 razy. Tak otrzymane średnie zapisać do wektora yszum_srednia i w ten sposób wygenerować wektor średnich wartości i podstawiać dalej.
Tak ja to widzę (mam nadzieję, że zbytnio nie zamieszałem).
|
|
|
AUTOR:
janedakdoy
Dołączył: 27 Lip 2015
Posty: 2
|
I'm reading this story, it made me very interested me. It is good that we were able to put it to use in everyday life.
|
|
|
Forum MATLAB Strona Główna->
Telekomunikacja
|
|
Wszystkie czasy w strefie CET (Europa)
|
|
Statystyki forum:
Od dnia 08.06.2006 forum odwiedzano 44307404
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm
|
|
Najnowsze posty na forum:
|
|
Twoje prawa:
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Nie możesz ściągać plików na tym forum
|
|
|
|
|