Files
matlab/common/radio/tx_mpsk.m
T
jens 579c1544b1 - added
git-svn-id: http://moon:8086/svn/matlab/trunk@157 801c6759-fa7c-4059-a304-17956f83a07c
2022-06-16 06:16:47 +00:00

76 lines
1.9 KiB
Matlab
Executable File

% [IQ] = tx_mpsk(nBytes, nBitsPerSym, sr, fc, name, kawgn_db, ch, rs)
%
function [IQ] = tx_mpsk(nBytes, nBitsPerSym, sr, fc, name, kawgn_db, ch, rs, payload)
if fc > sr
fa = 4*fc
else
fa = 4*sr;
end;
k_am = 0.0;
f_am = 0.2;
rf_gain = 0.7;
% Write settings file
fid = fopen([name '.cfg'], 'w');
fprintf(fid, 'project : %s\n', name);
fprintf(fid, 'fa : %f\n', fa);
fprintf(fid, 'fc : %f\n', fc);
fprintf(fid, 'sr : %f\n', sr);
fprintf(fid, 'nBitsPerSym : %d\n', nBitsPerSym);
fprintf(fid, 'ch : %d\n', ch);
fprintf(fid, 'rs : %d\n', rs);
fprintf(fid, 'kawgn_db : %d\n', kawgn_db);
fclose(fid);
name_rf = sprintf('%s_rf',name);
name_i = sprintf('%s_tx_i',name);
name_q = sprintf('%s_tx_q',name);
file_rf = sprintf('%s.dat',name_rf);
file_i = sprintf('%s.dat',name_i);
file_q = sprintf('%s.dat',name_q);
if (isempty(payload))
commandStr = sprintf('mpsk_tx\\mpsk_tx.exe %g %g %g %d %d %s',fa,fc,sr, nBitsPerSym, nBytes, name);
else
commandStr = sprintf('mpsk_tx\\mpsk_tx.exe %g %g %g %d %d %s %s',fa,fc,sr, nBitsPerSym, nBytes, name, payload);
end
disp(commandStr);
dos(commandStr);
fid = fopen(file_rf, 'rb');
rfdata = fread(fid, 'float32');
fclose(fid);
dat2wav(name_i, fa, 16, 0.9);
dat2wav(name_q, fa, 16, 0.9);
if (rs==1)
rfdata = RESAMPLE(rfdata,fa,fix(1.002*fa));
end;
len = length(rfdata);
kawgn = 10^(kawgn_db/10)
awgn = sqrt(kawgn)*randn(len,1);
am = cos(2*pi*f_am/fa.*(0:len-1))';
if (ch==1)
hch_a = [1.0 0.7];
hch_b = [1];
else
hch_a = [1.0];
hch_b = [1.0];
end
rf = rf_gain.*((1+k_am*am).*filter(hch_b,hch_a,rfdata) + awgn);
rf_level = 10*log10(var(rf));
SNR_DB = round(rf_level-kawgn_db)
fid = fopen(file_rf, 'wb');
fwrite(fid, rf, 'float32');
fclose(fid);
dat2wav(name_rf, fa, 16, 0.9)
disp('Adding Noise to RF...');