|
- %
- %Main sc
-
- %
-
- clear all;
- clc;
-
- addpath(path, genpath(pwd));
- filename='./dataforpython.mat';
- param.N=40;
- param.M=20;
- param.K=32;
-
-
- %
- % param.kappaset=unifrnd(0,10,param.N,1); % for channels
- % kappaset=param.kappaset;
- % save kappaset kappaset;
- load kappaset
-
-
-
- param.kappaset=kappaset;
-
- active.type=3;
- active.power1=[0.1676, 0.4460, 1.0038, 2.3826].^(1/2);
- active.power2=[0.2,1.8].^(1/2);
- active.power3=[1].^(1/2);
- active.spar=[0.1,0.2,0.3];
- active.n1=round(0.2*param.N);
- active.n2=round(0.1*param.N);
- active.n3=param.N-active.n1-active.n2;
-
-
- A_type=1; % 1 for complex 2 for real 3 for +1 -1
- A=generate_A(A_type, param.N,param.M,param.K); % generate A
- %load A
-
- % generate sparsity array
- active.spar_array=gen_sparsity_array(active);
-
- %sample for tex
- sample_test=10000;
- sample_train=1;
-
- snr=0:2:10;
- sigma_set=1./(10.^(snr/10));
- X_test=zeros(length(sigma_set),sample_test,param.N,param.M);
- Y_test=zeros(length(sigma_set),sample_test,param.K,param.M);
- S_test=zeros(length(sigma_set),sample_test,param.N,1);
- index_test=zeros(length(sigma_set),sample_test,param.N,1);
- X_train=zeros(length(sigma_set),sample_train,param.N,param.M);
- Y_train=zeros(length(sigma_set),sample_train,param.K,param.M);
- S_train=zeros(length(sigma_set),sample_train,param.N,1);
- index_train=zeros(length(sigma_set),sample_train,param.N,1);
- hatx_train=zeros(length(sigma_set),sample_train,param.N,param.M);
- hatx_test=zeros(length(sigma_set),sample_test,param.N,param.M);
- %
- %
-
- error=zeros(sample_test,length(sigma_set));
- error1=zeros(sample_test,length(sigma_set));
- error2=zeros(sample_test,length(sigma_set));
- error3=zeros(sample_test,length(sigma_set));
- for sig=1:length(sigma_set)
- param.sigma=sigma_set(sig);
- for sam=1:sample_train
- [y, A, s,h,x, check_index] = signal_gen_fxn(param,active,A);
- Y_train(sig,sam,:,:)=y;
- X_train(sig,sam,:,:)=x;
- S_train(sig,sam,:,:)=s;
- index_train(sig,sam,:,:)=check_index;
- end
-
-
- for sam=1:sample_test
- [y, A, s,h,x, check_index] = signal_gen_fxn(param,active,A);
- Y_test(sig,sam,:,:)=y;
- X_test(sig,sam,:,:)=x;
- S_test(sig,sam,:,:)=s;
- index_test(sig,sam,:,:)=check_index;
-
- [hat_x,v_x,w1,w2,w3,u_sn1,u_sn2,u_sn3]=AMP_main(param,active,A,y);
-
- [error(sam,sig),error1(sam,sig),error2(sam,sig),error3(sam,sig)]=symbol_detection(u_sn1,u_sn2,u_sn3,param,check_index,active);
- end
-
- end
-
- error_total=sum(error,1)/sample_test;
-
- snr=10*log10(1./sigma_set);
-
-
- n1=active.n1;
- n2=active.n2;
- n3=active.n3;
- kappaset=param.kappaset;
-
- % save the training data and test data for deep neural networks.
- %save(filename,'snr','error_total', 'X_train', 'Y_train','S_train','index_train','kappaset','A','n1','n2','n3','X_test','Y_test','S_test','index_test','sample_train','sample_test','-v7.3');
-
- semilogy(snr,error_total); hold on;
-
- semilogy(snr,error_total1); hold on;
|