diff --git a/targets/PROJECTS/TDDREC/genorthpskseq.m b/targets/PROJECTS/TDDREC/genorthpskseq.m
deleted file mode 100644
index 184485e871b5eb303ccc8f0aa2ea9b3e95cc39d1..0000000000000000000000000000000000000000
--- a/targets/PROJECTS/TDDREC/genorthpskseq.m
+++ /dev/null
@@ -1,32 +0,0 @@
-function [carrierdata, s]=genorthqpskseq(Ns,N,amp)
-  
-if(N!=512*150)
-  error('The sequence length must be 76800.');
-endif
-
-s = zeros(N,Ns);
-H=1; for k=1:log2(128) H=[H H; H -H]; end; H=H(:,1:120);
-i=1; while(i<size(H,1)) h=H(i,:); inds=find(h*H'!=0); H(inds,:)=[]; H=[h; H]; i=i+1; end
-Hc=H+sqrt(-1)*H;
-if(sum(Hc*Hc'-240*eye(8))>0) error("The code is not orhtogonal\n"); endif
-
-carrierdata=zeros(120,Ns*301);
-orthinds=1:8;
-for i=1:301
-  for k=1:Ns    
-    randind=ceil((9-k)*rand());
-    carrierdata(:,i+(k-1)*301)=Hc(orthinds(randind),:)';
-    orthinds(randind)=[];
-  endfor
-endfor
-
-for k=1:Ns  
-  for i=0:119
-    fblock=[0 carrierdata(i,1:150) zeros(1,210) carrierdata(i,151:301)];
-    ifblock=ifft(fblock,512);				
-    block = [ifblock(end-127:end) ifblock]; # Cycl. prefix 
-    s([1:640]+i*640,k)=floor(amp*block);
-  endfor
-endfor
-
-endfunction
\ No newline at end of file
diff --git a/targets/PROJECTS/TDDREC/genorthqpskseq.m b/targets/PROJECTS/TDDREC/genorthqpskseq.m
index b42d449d7f8eef4c9cbd8519fe1ec604eb8e79e6..fdec735ec91fa5d9d59d45e948e93f158e40e30b 100644
--- a/targets/PROJECTS/TDDREC/genorthqpskseq.m
+++ b/targets/PROJECTS/TDDREC/genorthqpskseq.m
@@ -1,3 +1,7 @@
+# % Author: Mirsad Cirkic
+# % Organisation: Eurecom (and Linkoping University)
+# % E-mail: mirsad.cirkic@liu.se
+
 function [carrierdata, s]=genorthqpskseq(Ns,N,amp)
   
 if(N!=512*150)
diff --git a/targets/PROJECTS/TDDREC/genrandpskseq.m b/targets/PROJECTS/TDDREC/genrandpskseq.m
index 8d0030c13ce87696b5fea4e0d2c7ff3f5701e55f..9ff15d2845514eb185fa1de72dc11d12a14551a4 100644
--- a/targets/PROJECTS/TDDREC/genrandpskseq.m
+++ b/targets/PROJECTS/TDDREC/genrandpskseq.m
@@ -1,3 +1,8 @@
+# % Author: Mirsad Cirkic
+# % Organisation: Eurecom (and Linkoping University)
+# % E-mail: mirsad.cirkic@liu.se
+
+
 function [carrierdata, s]=genrandpskseq(N,M,amp)
   
 if(mod(N,640)~=0)
diff --git a/targets/PROJECTS/TDDREC/initparams.m b/targets/PROJECTS/TDDREC/initparams.m
index 222683a9a2ce403ec2aa5403314303ce8ea0fd83..3f3fd691993fc3868efecb9dcfd3fe54ae462aef 100644
--- a/targets/PROJECTS/TDDREC/initparams.m
+++ b/targets/PROJECTS/TDDREC/initparams.m
@@ -1,3 +1,7 @@
+# % Author: Mirsad Cirkic
+# % Organisation: Eurecom (and Linkoping University)
+# % E-mail: mirsad.cirkic@liu.se
+
 clear
 paramsinitialized=false;
 limeparms;
@@ -8,7 +12,7 @@ card = 0;
 Ntrx=4;
 dual_tx=0;
 active_rfA=[1 0 0 0];
-active_rfB=[0 1 1 0];
+active_rfB=[0 1 0 0];
 active_rf=active_rfA+active_rfB;
 
 %fc  = 2660000000;
diff --git a/targets/PROJECTS/TDDREC/runmeas.m b/targets/PROJECTS/TDDREC/runmeas.m
index 56ddd9d9c7765157448e2f7537dc92c7ff8c1556..3586e42d4f63bec056736e10d45b364947f8d2cd 100644
--- a/targets/PROJECTS/TDDREC/runmeas.m
+++ b/targets/PROJECTS/TDDREC/runmeas.m
@@ -1,3 +1,7 @@
+# % Author: Mirsad Cirkic
+# % Organisation: Eurecom (and Linkoping University)
+# % E-mail: mirsad.cirkic@liu.se
+
 if(paramsinitialized)
 	N=76800;
 	M=4;
@@ -116,7 +120,7 @@ if(paramsinitialized)
 	oarf_stop(card);
 	
 	# # -- Do the channel estimation
-	chanests=reshape(diag(repmat(Db2a_T,Niter,1)'*repmat(Db2a_R,1,Nantb)/(Niter*120)),301,Nantb)	
+	chanests=reshape(diag(repmat(Db2a_T,Niter,1)'*repmat(Db2a_R,1,Nantb)/(Niter*120)),301,Nantb);
 	H=conj(repmat(Db2a_T,Niter,1)).*repmat(Db2a_R,1,Nantb);
 	phases=unwrap(angle(H));
 	# for i=0:(Nantb-1)
diff --git a/targets/PROJECTS/TDDREC/runmeas_woduplex.m b/targets/PROJECTS/TDDREC/runmeas_woduplex.m
new file mode 100644
index 0000000000000000000000000000000000000000..232b4d876e36ebab506dceeb59841fd9570b857d
--- /dev/null
+++ b/targets/PROJECTS/TDDREC/runmeas_woduplex.m
@@ -0,0 +1,141 @@
+# % Author: Mirsad Cirkic
+# % Organisation: Eurecom (and Linkoping University)
+# % E-mail: mirsad.cirkic@liu.se
+
+if(paramsinitialized)
+  disp("This code is so far only written for single runs. Multiple \
+      runs will overwrite the previous measurement data, i.e., the \
+      data structures are not defined for multiple runs. You will need to \
+      add code in order to save the intermediate measurements.")
+  N=76800;
+  M=4;
+  signalB2A=zeros(N,1);
+  signalA2B=zeros(N,4);
+  indA=find(active_rfA==1);
+  indB=find(active_rfB==1);
+  Nanta=length(indA);
+  Nantb=length(indB);
+  if(Nanta!=1) error("Node A can only have one antenna active\n"); endif
+  Niter=1;
+  if(Niter!=1) error("We should only use one get_frame at each \
+	run.\n"); 
+  endif
+  
+# %% ------- Prepare the signals for both A2B and B2A ------- %%
+  [Da2b_T, signalA2B]=genrandpskseq(N,M,amp);
+  signalA2B=repmat(signalA2B,1,4);
+  signalB2A=zeros(N,4);
+  [Db2a_T,tmps]=genorthqpskseq(Nantb,N,amp);
+  ind=1;
+  for i=1:4
+    if(indB(ind)==i)
+      signalB2A(:,i)=tmps(:,ind);
+      if(length(indB)> ind) ind=ind+1; endif
+    endif
+  endfor
+    
+# %% ------- Node A to B transmission/reception ------- %%	
+  rf_mode_current = rf_mode + (DMAMODE_TX+TXEN)*active_rfA +(DMAMODE_RX+RXEN)*active_rfB;
+  oarf_config_exmimo(card, freq_rx,freq_tx,tdd_config,syncmode,rx_gain,tx_gain,eNB_flag,rf_mode_current,rf_rxdc,rf_local,rf_vcocal,rffe_rxg_low,rffe_rxg_final,rffe_band,autocal_mode);	
+  oarf_send_frame(card,signalA2B,n_bit);
+  receivedB2A=oarf_get_frame(card);
+  oarf_stop(card);
+  
+# %% ------- Node B to A transmission/reception ------- %%	
+  rf_mode_current = rf_mode + (DMAMODE_TX+TXEN)*active_rfB +(DMAMODE_RX+RXEN)*active_rfA;
+  oarf_config_exmimo(card, freq_rx,freq_tx,tdd_config,syncmode,rx_gain,tx_gain,eNB_flag,rf_mode_current,rf_rxdc,rf_local,rf_vcocal,rffe_rxg_low,rffe_rxg_final,rffe_band,autocal_mode);
+  oarf_send_frame(card,signalB2A,n_bit);
+  receivedB2A=oarf_get_frame(card);
+  oarf_stop(card);
+
+# %% ------- Do the A to B channel estimation ------- %%	
+  Da2b_R=zeros(Niter*120,Nantb*301);
+  for i=0:119;
+    ifblock=receivedA2B(i*640+[1:640],indB);
+    ifblock(1:128,:)=[];
+    fblock=fft(ifblock);
+    fblock(1,:)=[];
+    fblock(151:360,:)=[];
+    Da2b_R(iter*120+i+1,:)=vec(fblock);	      
+  endfor
+  HA2B=conj(Da2b_T).*Da2b_R;
+  phasesA2B=unwrap(angle(HA2B));
+  if(mean(var(phasesA2B))>0.5) 
+    disp("The phases of your estimates are a bit high (larger than 0.5 rad.), something is wrong.");
+  endif
+  
+  chanestsA2B=diag(Da2b_T'*Da2b_R)/size(Da2b_T,1);
+  for i=0:(Nantb-1)
+    fchanestsA2B(:,i+1)=[0; chanestsA2B(301*i+[1:150]); zeros(210,1); chanestsA2B(301*i+[151:301])];
+  endfor
+  tchanestsA2B=ifft(fchanestsA2B);
+  
+%% ------- Do the B to A channel estimation ------- %%
+  Db2a_R=zeros(Niter*120,Nanta*301);
+  for i=0:119;
+    ifblock=receivedB2A(i*640+[1:640],indA);
+    ifblock(1:128,:)=[];
+    fblock=fft(ifblock);
+    fblock(1,:)=[];
+    fblock(151:360,:)=[];
+    Db2a_R(iter*120+i+1,:)=fblock.';
+  endfor  
+  HB2A=conj(repmat(Db2a_T,Niter,1)).*repmat(Db2a_R,1,Nantb);
+  phasesB2A=unwrap(angle(HB2A));
+  if(mean(var(phasesB2A))>0.5) 
+    disp("The phases of your estimates are a bit high (larger than 0.5 rad.), something is wrong.");
+  endif
+  chanestsB2A=reshape(diag(repmat(Db2a_T,Niter,1)'*repmat(Db2a_R,1,Nantb)/(Niter*120)),301,Nantb);
+	   	
+# %% -- Some plotting code -- %%  (you can uncomment what you see fit)
+	# clf
+	# figure(1)
+	# for i=1:4 
+	#   subplot(220+i);plot(20*log10(abs(fftshift(fft(receivedA2B(:,i)))))); 
+	# endfor
+	
+	# figure(2)
+	# t=[0:512-1]/512*1e-2;
+	# plot(t,abs(tchanests))
+	# xlabel('time')
+	# ylabel('|h|')
+	
+	# figure(3)
+	# % wndw = 50;
+	# % for i=1:5:Nantb*301             %# sliding window size
+	# %   phamean = filter(ones(wndw,1)/wndw, 1, phases(:,i)); %# moving average
+	# %   plot(phamean(wndw:end),'LineWidth',2);
+	# %   title(['subcarrier ' num2str(i)]);	  
+	# %   xlabel('time')
+	# %   ylabel('phase')
+	# %   ylim([-pi pi])
+	# %   drawnow;
+	# %   pause(0.1)
+	# % endfor
+	# phavar=var(phases);
+	# plotphavar=[];
+	# for i=0:Nantb-1
+	#   plotphavar=[plotphavar; phavar([1:301]+i*301)];
+	# endfor
+	# plot([1:150 362:512],plotphavar,'o');
+	# %ylim([0 pi])
+	# xlabel('subcarrier')
+	# ylabel('phase variance')
+	
+
+	# figure(4)
+	# plot(20*log10(abs(fchanests))), ylim([40 100])
+
+	# %end
+	# fprintf(' done\n')	
+
+
+	# for i=0:(Nantb-1)
+	#   fchanests(:,i+1)=[0; chanests(301*i+[1:150]); zeros(210,1); chanests(301*i+[151:301])];
+	# endfor
+	# tchanests=ifft(fchanests);
+	
+		
+else
+  error("You have to run init.params.m first!")
+end