I have a dummy vector with 5000 rows and 1 column . I have some single 1 in this vector. No I want to change all 0 before the 1 to 1 and also change the 3 following 0 after the 1 to 1. But I don't know how. Could someone help me?Thank you a lot.
    2 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    FC93
 am 5 Okt. 2016
  
    
    
    
    
    Bearbeitet: Jos (10584)
      
      
 am 5 Okt. 2016
            In gener i would like to change
0 0 1 0 0 0 0
to
0 1 1 1 1 1 0
0 Kommentare
Akzeptierte Antwort
  Guillaume
      
      
 am 5 Okt. 2016
        One possibility, assuming you're using R2016b:
v = [0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0];  %for example
startseq = strfind(v, [0 1 0 0 0]);  %strfind also work for finding sequences of numbers
v(startseq + (0:4)') = repmat([1 1 1 1 1], 1, numel(startseq));
If prior to R2016b, replace startseq + (0:4)' in the last line by:
bsxfun(@plus, startseq, (0:4)')
3 Kommentare
  Guillaume
      
      
 am 5 Okt. 2016
				What is wrong is that you're using a version before R2016b.
As I wrote in my answer, If prior to R2016b, replace .... Follow the instructions!
Weitere Antworten (2)
  KSSV
      
      
 am 5 Okt. 2016
        A = [0 0 1 0 0 0 0] ;
B = A ;
B(A==1) = 0 ; % replace 1 with 0 
B(A==0) = 1 ; % replace 0 with 1
3 Kommentare
  Jos (10584)
      
      
 am 5 Okt. 2016
        
      Bearbeitet: Jos (10584)
      
      
 am 5 Okt. 2016
  
      You can convolve your vector with a series of ones using filter, which will add a specific number of ones after each array
a = [0 0 1 0 0 0 0 0]
filter(ones(1,4),1,a) % add 3 ones
%   [0 0 1 1 1 1 0 0]
Using something similar on the reversed array will give you what you want.
FUN = @(V,AddN) filter(ones(1,AddN+1),1,V) % a function for convenience
V = [0 0 1 0 0 0 0 0 0 1 1 0 0]
FUN(V,3) | fliplr(FUN(fliplr(V),1)) % add 3 ones after and 1 one before each 1 in V
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!