xref: /openwifi/user_space/arbitrary_iq_gen/single_carrier_gen.m (revision 3acd1024f60e301775d392b2d9e881bc8db97bb3)
1% Author: Xianjun Jiao ([email protected]; [email protected])
2% SPDX-FileCopyrightText: 2023 UGent
3% SPDX-License-Identifier: AGPL-3.0-or-later
4
5function single_carrier_gen(carrier_freq, num_iq)
6if exist('carrier_freq', 'var')==0 || isempty(carrier_freq)
7  carrier_freq = 1e6;
8end
9
10if exist('num_iq', 'var')==0 || isempty(num_iq)
11  num_iq = 512;
12end
13
14sampling_rate = 20e6;
15sampling_time = 1/sampling_rate;
16t = (0.3+(0:(num_iq-1))).*sampling_time;
17s = exp(2.*pi.*carrier_freq.*t.*1i);
18
19%let's use 14 bits
20real_part = round(real(s).*(2^14));
21imag_part = round(imag(s).*(2^14));
22
23filename = ['iq_single_carrier_' num2str(carrier_freq) 'Hz_' num2str(num_iq) '.txt'];
24fid = fopen(filename,'w');
25if fid == -1
26    disp('fopen failed');
27    return;
28end
29len = length(s);
30for j=1:len
31    fprintf(fid, '%d,%d\n', real_part(j), imag_part(j));
32end
33fclose(fid);
34disp(['Saved to ' filename]);
35
36filename = ['iq_single_carrier_' num2str(carrier_freq) 'Hz_' num2str(num_iq) '.bin'];
37fid = fopen(filename,'w');
38if fid == -1
39    disp('fopen error');
40    return;
41end
42
43iq_int16 = [real_part; imag_part];
44iq_int16 = iq_int16(:);
45
46fwrite(fid, iq_int16, 'int16');
47fclose(fid);
48disp(['Saved to ' filename]);
49