How would I replace a string of numbers with more numbers using for and if statements?
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Jacob Roach
 el 3 de Nov. de 2018
  
    
    
    
    
    Comentada: madhan ravi
      
      
 el 3 de Nov. de 2018
            Here is my code so far. I'm trying to make it so that if the number is "1" in the string, it replaces it with five zeros. If the number is "2" in the string it replaces that with 5 ones, and if the number is "3" in the string, it replaces it with 5 twos and make that all a different string of numbers called d. The end should look like this: d = [0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,2,2,2,2,2]. I really need help, I am awful with matlab.
 if true
   t = [1,2,1,2,1,3];
% For Loop
for n = 1:length(t)
    if t(n) == 1
        d(n) = 0,0,0,0,0;
    elseif t(n) == 2
        d(n) = 1,1,1,1,1;
    else t(n) == 3
        d = 2,2,2,2,2;
    end
end
  end
0 comentarios
Respuesta aceptada
  madhan ravi
      
      
 el 3 de Nov. de 2018
        
      Editada: madhan ravi
      
      
 el 3 de Nov. de 2018
  
      t = string([1,2,1,2,1,3]);
d=cell(1,numel(t));    %pre-allocation
for i = 1:numel(t)
if t(i)=='1'
         d{i}=[ones(1,5)*0];
elseif t(i)=='2'
         d{i}=[ones(1,5)*1];
elseif t(i)=='3'
         d{i}=[ones(1,5)*2];
end
end
d = horzcat(d{:})
command window:
>> COMMUNITY
d =
    Columns 1 through 13
       0     0     0     0     0     1     1     1     1     1     0     0     0
    Columns 14 through 26
       0     0     1     1     1     1     1     0     0     0     0     0     2
    Columns 27 through 30
       2     2     2     2
>>
2 comentarios
  madhan ravi
      
      
 el 3 de Nov. de 2018
				1)just created 1 by 5 cell array;
2) made a loop until the number of cell array;
3)made if and else if conditions to store elements in each cell when the condition is satisfied;
4)finally concatenated them horizontally.
What's the advantage?
Cells are huge containers they can compress how much ever you feed inside them unlike the normal arrays
Más respuestas (1)
  Tyler Johns
 el 3 de Nov. de 2018
        Keep in mind when programming there is usually more than one way to accomplish your goal. Here is an additional solution. This may not be the most efficient way since the size of vector d changes every loop iteration but it is still a solution nonetheless.
t = [1 2 1 2 1 3];
d=[]; % create empty vector d
for n = 1:length(t)
    if t(n)==1
        d = [d 0 0 0 0 0]; %add new numbers to end of vector d
    elseif t(n)==2
        d = [d 1 1 1 1 1];
    elseif t(n)==3
        d = [d 2 2 2 2 2];
    end
end
disp(d)
4 comentarios
  Stephen23
      
      
 el 3 de Nov. de 2018
				Follow madhan ravi's answer: it shows good practice: a preallocated cell array to store the intermediate arrays.
Ver también
Categorías
				Más información sobre Characters and Strings en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!