forked from Mirrors/freeswitch
33 lines
849 B
Matlab
33 lines
849 B
Matlab
% fdmdv_mod.m
|
|
%
|
|
% Modulator function for FDMDV modem, uses test frames as input and
|
|
% outputs a raw file of 16 bit shorts at a sample rate of 8 kHz.
|
|
%
|
|
% Copyright David Rowe 2012
|
|
% This program is distributed under the terms of the GNU General Public License
|
|
% Version 2
|
|
%
|
|
|
|
function tx_fdm = fdmdv_mod(rawfilename, nbits)
|
|
|
|
fdmdv; % include modem code
|
|
|
|
frames = floor(nbits/(Nc*Nb))
|
|
tx_fdm = [];
|
|
gain = 1000; % Scale up to 16 bit shorts
|
|
prev_tx_symbols = ones(Nc+1,1);
|
|
|
|
for i=1:frames
|
|
tx_bits = get_test_bits(Nc*Nb);
|
|
tx_symbols = bits_to_qpsk(prev_tx_symbols, tx_bits,'dqpsk');
|
|
prev_tx_symbols = tx_symbols;
|
|
tx_baseband = tx_filter(tx_symbols);
|
|
tx_fdm = [tx_fdm real(fdm_upconvert(tx_baseband))];
|
|
end
|
|
|
|
tx_fdm *= gain;
|
|
fout = fopen(rawfilename,"wb");
|
|
fwrite(fout, tx_fdm, "short");
|
|
fclose(fout);
|
|
endfunction
|