Odpovedať 
 
Hodnotenie témy:
  • 0 Hlasov - 0 Priemer
  • 1
  • 2
  • 3
  • 4
  • 5
vysielač/prijimač
01-15-2013, 17:49 (Tento príspevok bol naposledy zmenený: 01-15-2013 18:00 od miseno.)
Príspevok: #1
vysielač/prijimač
Ahoj potreboval bych radu delam dva programy - transmitter a receiver. V transmitteru prevadim retezec na ascii znaky, do binarniho tvaru a pote provadim amplitudovou modulaci. Výsledný zvuk uložím do formátu .wav. V receiveru otevřu zvukový soubor a pomocí filtru potrebuji dekodovat retezec z transmitteru. Problem je v tom, ze na vystupu se text neshoduje.. dekuji za rady

Kód:
TRANSMITTER:
________________________
a = ('hello world');

Fs=48000;
Fc=10000;

res=dec2bin(a);
res=res';
res=res(:)'-'0';
res=ammod(res,Fc,Fs);
res=res>0;
x=res;
i=0;
y=[];
for i=1:length(x),
    if x(i) == 0;
        y=[y zeros(1,4800)];
    end
    if x(i) == 1;
        y=[y ones(1,4800)];
    end
    
end;
res=y;
t=0:(1/Fs):(2*369600/96000.2);
q=sin(2*pi*Fc.*t);
res=q;
res=y.*q;
plot(res);
res=[1,0,1,0,1,0,1,0,res];
sound(res,Fs);
wavwrite(res,Fs,'zvuk');


RECEIVER:
__________________________
clear all;
close all;
clc;

filename='zvuk.wav';
[x,Fs,NBITS]=wavread(filename);

Ts = 1/Fs;

Tb = 4800*Ts;

xd = [zeros(round(48000*rand(1)),1); x];

% Adds White gaussian noise
xn = awgn(xd,30);

% rectifier
xr = xn.^2;

% filter project
fc=200;
N = 2;
Wc =(fc*2)/Fs;
[B,A] = BUTTER(N,Wc);

% filter
y = 2*filter(B,A,xr);

plot(xn)
hold on;
plot(y,'r')

res=y;
pom=[];


for i=1:length(res),
if mod(i,4800)==0 && res(i) >= 0.5;
res(i)=1;
pom=[pom res(i)];
end;
if mod(i,4800)==0 && res(i) < 0.5;
res(i)=0;
pom=[pom res(i)];
end;
end;

pom = sprintf('%d', pom);
pom = reshape(pom',1,numel(pom));
res=char(bin2dec(reshape(pom,7,[]).')).'


.zip  MATLAB.zip (Veľkosť: 951 bajtov / Sťahovanie: 0) zde prikladam v raru
Vyhľadať všetky príspevky tohoto používateľa
Citovať príspevok v odpovedi
Odpovedať 


Skok na fórum:




Kontakty | matlab.sk | Nahor | Na obsah | Odľahčený (archivačný) mód | RSS