- added
git-svn-id: http://moon:8086/svn/matlab/trunk@157 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
Executable
+76
@@ -0,0 +1,76 @@
|
||||
% [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...');
|
||||
|
||||
Reference in New Issue
Block a user