Change the first group of 0s in each column
    4 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I have this matrix, there are more than 500 columns and 30 rows. 

I need to change only the first group of 0s into 3. The 0s in the end, after the 1s, should stay as 0s.
0 Commenti
Risposte (2)
  Mathieu NOE
      
 il 19 Mag 2021
        hello Ana
here my suggestion , based on a dummy data array ; i kept the NaN unchanged (my assumption)
Code is : 
clc
clearvars
A = [NaN 0 0 0 ;...
    0 NaN NaN 0;...
    NaN 0 NaN NaN;...
    1 0 0 0 ;...
    1 2 2 0 ;...
    0 2 1 0 ;...
    0 1 3 0]
%% main code
A2 = A;
A2(isnan(A2)) = 0;
As = sum(A2,2);
ind_row = find(As<eps);
B = A(ind_row,:);
B(B<eps) = 3;
A(ind_row,:) = B
gives foloowing output : 
initial A array : 
A =   NaN     0     0     0
     0   NaN   NaN     0
   NaN     0   NaN   NaN
     1     0     0     0
     1     2     2     0
     0     2     1     0
     0     1     3     0
modified A array (output) :
A =   NaN     3     3     3
     3   NaN   NaN     3
   NaN     3   NaN   NaN
     1     0     0     0
     1     2     2     0
     0     2     1     0
     0     1     3     0
6 Commenti
  Mathieu NOE
      
 il 19 Mag 2021
				ok this seems to be the right data file.... 
Updated my code, and as far as I can tell, seems to fullfill your request ... 
load('STN.mat')
A = STN_1;
tmp = A(1:30,1:10)
%% main code
for ci = 1:size(A,2)
    AA = A(:,ci);
    if max(AA)>eps % if yes, this column must be updated for the first zeros (up to first 2)
        ind = find(abs(AA-2)<eps); % find rows that contains "2"
        ind = ind(1);
        B = AA(1:ind-1,:);
        B(B<eps) = 3;
        AA(1:ind-1,:) = B; % replace 0 with 3
        A(:,ci) = AA;
    end
end
tmp2 = A(1:30,1:10)
initial A array : 
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     2     0     0     0     0     0     0     0
     0     0     2     2     0     0     0     0     0     2
     2     2     2     2     0     0     0     0     2     2
     2     2     2     2     0     0     0     0     2     2
     2     2     2     2     0     0     0     0     2     2
     2     2     2     2     0     0     0     0     2     2
     2     2     2     2     2     2     0     0     2     2
     1     2     1     1     2     2     0     0     2     1
     1     1     1     1     1     2     0     0     1     1
     1     1     1     1     0     1     0     0     1     1
     1     1     1     1     0     1     0     0     1   NaN
     1     1     1     1     0     1     0     0     1     1
     0     1     1     0     0     0     0     0     1     1
     0     1     1     0     0   NaN   NaN   NaN   NaN   NaN
     0     0     0     0     0   NaN   NaN   NaN   NaN   NaN
     0     0     0     0     0   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
modified A array (output) :
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN     3     0     0     3     3
     3     3     3     3     3     3     0     0     3     3
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN     3     0     0     3     3
     3     3     3     3     3     3     0     0     3     3
     3     3     3     3     3     3     0     0     3     3
     3     3     3     3     3     3     0     0     3     3
     3     3     2     3     3     3     0     0     3     3
     3     3     2     2     3     3     0     0     3     2
     2     2     2     2     3     3     0     0     2     2
     2     2     2     2     3     3     0     0     2     2
     2     2     2     2     3     3     0     0     2     2
     2     2     2     2     3     3     0     0     2     2
     2     2     2     2     2     2     0     0     2     2
     1     2     1     1     2     2     0     0     2     1
     1     1     1     1     1     2     0     0     1     1
     1     1     1     1     0     1     0     0     1     1
     1     1     1     1     0     1     0     0     1   NaN
     1     1     1     1     0     1     0     0     1     1
     0     1     1     0     0     0     0     0     1     1
     0     1     1     0     0   NaN   NaN   NaN   NaN   NaN
     0     0     0     0     0   NaN   NaN   NaN   NaN   NaN
     0     0     0     0     0   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
Vedere anche
Categorie
				Scopri di più su Data Type Conversion in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




