function [Z,A,S] = load_data(TYPE,samples, signals, snapshots) %clc,clear,close all; %TYPE = "DOA";samples = 10; signals=2; snapshots = 1000; %================== % Z = A*S % Z: output (samples x snapshots) % A: subspace (samples x signals) % S: signal (signals x snapshots) %================== if TYPE == "random" A = rand(samples, signals); S = rand(signals,snapshots); Z = A*S; elseif TYPE == "DOA" %Initial subspace A = {}; theta1 = 40*pi/180* ones(snapshots,1)+0.2; theta2 = (((1:snapshots)/snapshots*20+20)*pi/180)'-0.2; theta3 = [10*pi/180*ones(int32(snapshots/3),1); 20*pi/180*ones(int32(snapshots-snapshots/3),1)]-0.3; theta4 = [10*pi/180*ones(int32(snapshots/3),1); 10*pi/180*ones(int32(snapshots-snapshots/3),1)]-0.6; theta = [theta1,theta2,theta3,theta4]; if signals < 5 theta = theta(:,1:signals); else disp("Initial more signals"); end %doa lamda = 1; d = lamda/2; f = d/lamda*sin(theta); for i=1:snapshots w = 2*pi*d/lamda .*sin(theta(i,:)); A{i} = (exp(j.*(0:samples-1)'*w)); end %Initial signal S = rand(signals,snapshots); %Initial observed signal Z = zeros(samples,snapshots); for ii=1:snapshots Z(:,ii) = A{ii}*S(:,ii); end %show doa % figure; % plot(f) end