⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generate_signal_data_cyclo.m

📁 implement basic routines in Matlab and Octave (currently using Matlab R13) for simulating adaptive b
💻 M
字号:
function [interference_data, desired_data, interference_bits, desired_bits, interference_data_downsampled, desired_data_downsampled] = ...
    generate_signal_data(Nsamples, Fc, Fd, Fs, Signal_Power_ABS, Noise_Power_ABS, SignalType, SignalParam)

%plot(1-(cos(2*pi*(1:(Fs/Fd))/((Fs/Fd)*2))).^10)
mywindow2=1-(cos(2*pi*(1:(Fs/Fd))/((Fs/Fd)*2))).^10;
mywindow=[];
for i=1:Nsamples
    mywindow = [mywindow mywindow2];
end

% Generate the data due to interferers
interference_data = zeros(length(Signal_Power_ABS)-1, Nsamples*Fs/Fd);
interference_bits = zeros(length(Signal_Power_ABS)-1, Nsamples);
interference_data_downsampled = zeros(length(Signal_Power_ABS)-1, Nsamples);
for i=2:length(Signal_Power_ABS)    % Use this if we want frequency offsets for each interferer
    interference_bits(i-1,:) = randint(Nsamples,1,[0,1]).';  % octave change
    if strcmp(SignalType(i,:), 'pskmod')
        disp('In pskmod')
        interference_data_downsampled(i-1,:) = Signal_Power_ABS(i, i) .* pskmod(interference_bits(i-1,:),2); % octave change
%        interference_data_downsampled(i-1,:) = interference_data_downsampled(i-1,:) + Noise_Power_ABS.*(randn(size(interference_data_downsampled(i-1,:))) + j*randn(size(interference_data_downsampled(i-1,:))));
        for ii = 1:Nsamples  interference_data(i-1, ((ii-1)*(Fs/Fd)+1):((ii)*(Fs/Fd)))=ones((Fs/Fd),1).*interference_data_downsampled(i-1,ii); end;
        %interference_data(i-1,:) = resample(interference_data_downsampled(i-1,:), Fs, Fd);
        %interference_data(i-1,:) = interference_data(i-1,:) .* mywindow;
    elseif strcmp(SignalType(i,:), 'qammod')
        disp('In qammod')
        interference_bits(i-1,:) = randint(Nsamples,1,[0,3]).';  % octave change
        interference_data_downsampled(i-1,:) = Signal_Power_ABS(i, i) .* qammod(interference_bits(i-1,:),4); % octave change
%        interference_data_downsampled(i-1,:) = interference_data_downsampled(i-1,:) + Noise_Power_ABS.*(randn(size(interference_data_downsampled(i-1,:))) + j*randn(size(interference_data_downsampled(i-1,:))));
        for ii = 1:Nsamples  interference_data(i-1, ((ii-1)*(Fs/Fd)+1):((ii)*(Fs/Fd)))=ones((Fs/Fd),1).*interference_data_downsampled(i-1,ii); end;
        %interference_data(i-1,:) = resample(interference_data_downsampled(i-1,:), Fs, Fd);
        %interference_data(i-1,:) = interference_data(i-1,:) .* mywindow;        
    elseif strcmp(SignalType(i,:), 'sin   ')
        disp('In sin')
        interference_data(i-1,:) = Signal_Power_ABS(i, i) .* exp(2*j*pi*str2double(SignalParam(i,:))*(1:(Nsamples*Fs/Fd))/Fs);
%        interference_data(i-1,:) = interference_data(i-1,:) + Noise_Power_ABS.*(randn(size(interference_data(i-1,:))) + j*randn(size(interference_data(i-1,:))));
        interference_data_downsampled(i-1,:) = resample(interference_data(i-1,:), Fd, Fs);
    elseif strcmp(SignalType(i,:), 'cnoise')
        noiser=randn(1,Nsamples*Fs/Fd);
        noisei=randn(1,Nsamples*Fs/Fd);
        nfilt=fir1(11,0.4); % Eleventh order lowpass filter
        correlated_noise=filter(nfilt,1,noiser+j*noisei); % Correlated noise data
        interference_data(i-1,:) = Signal_Power_ABS(i, i) .* correlated_noise;
        interference_data_downsampled(i-1,:) = resample(interference_data(i-1,:), Fd, Fs);
    end
%    out_r = randint(Nsamples,1,[0,1]);
%    interference_data(i-1,:) = Signal_Power_ABS(i, i) .* dmodce(out_r,Fd,Fs,'psk',2).';
%   out_r = randint(Nsamples,1,[0,3]);
%   interference_data(i-1,:) = Signal_Power_ABS(i, i) .* dmodce(out_r,Fd,Fs,'qask',4).';
end
% Add some noise
if(size(interference_data) ~= 0)
    interference_data = interference_data;% + Noise_Power_ABS*randn(size(interference_data));
end

% Generate the data due to desired source
desired_bits = randint(1,Nsamples,[0,1]); %Data from the desired signal
desired_data_downsampled = Signal_Power_ABS(1, 1) .* pskmod(desired_bits.',2).';
desired_data_downsampled = desired_data_downsampled + Noise_Power_ABS.*(randn(size(desired_data_downsampled))+j*randn(size(desired_data_downsampled)));
%for ii = 1:Nsamples  desired_data(((ii-1)*(Fs/Fd)+1):((ii)*(Fs/Fd)))=ones((Fs/Fd),1).*desired_data_downsampled(ii); end;
desired_data = resample(desired_data_downsampled, Fs, Fd, 0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -