for loop help
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi
I want to be able to select c = 2 3 5 6 8 9 12 13 15 16 18 19 22 23 25 26 28 29 32....
I need to do this all the way up to 89. Can i do this in a loop?
0 comentarios
Respuestas (8)
  Neels
      
 el 7 de Ag. de 2011
        hi James, can you tell if the series follows a specific sequence or just some random values
0 comentarios
  Tim Mottram
 el 7 de Ag. de 2011
        Hi James,
So you want all numbers accept those ending in a 0,1 or 4? If this is correct then put an IF statement inside your FOR loop with something like: if a~= 0 && a~= 1 && a~=4, where a is the last digit of the current step being used by the for loop. Put the for loop incrementer (i = i+1) after the END of this IF statement. How you calculate, a, is up to you...
Regards
Tim
2 comentarios
  Tim Mottram
 el 7 de Ag. de 2011
				see Jan's comment for selecting the last digit, or transform the number into a string,(string = num2str(current for loop)) then ask for its length, (digit = length(string)) and if digit (this will always be the last digit) of string is not equal to 0,1,4 or 7, then proceed. some rough code..
for i = 0:YourEndPoint
s = num2str(i);
d = length(s);
if s(d) ~= 0 && ~=1 && ~= 4 && ~= 7
your code for what you want
end
i = i+1
end 
Sorry about the late reply, people are really on it here and you probably already have your solution. 
  Jan
      
      
 el 7 de Ag. de 2011
        for i = 0:90
  if all(mod(i, 10) ~= [0,1,4,7])
    disp(i)
  end
end
2 comentarios
  Jan
      
      
 el 7 de Ag. de 2011
				@James: Read it loud: if all (reminder of i divided by 10) are not equal to an element of [0, 1, 4, 7].
Example: i = 18, mod(i, 10)=8, (8~=[0,1,4,7]) = [1,1,1,1], all([1,1,1,1]) = TRUE.
i = 17, mod(i, 10)=7, (7~=[0,1,4,7])=[1,1,1,0], all([1,1,1,0]) = FALSE
  Jan
      
      
 el 7 de Ag. de 2011
        Another method:
for a = 0:10:80
  for b = [2,3,5,6,8,9]
    k = a + b;
    disp(k);
  end
end
0 comentarios
  Jan
      
      
 el 7 de Ag. de 2011
        And if I'm on the way:
ind = bsxfun(@plus, 0:10:80, [2,3,5,6,8,9]');
for i = reshape(ind, 1, [])
  disp(i)
end
0 comentarios
  Paulo Silva
      
 el 7 de Ag. de 2011
        yet another way
r=9;              %number of repetitions of the sequence, ex 9, max is 89
b=[2 3 5 6 8 9];  %original sequence
c=repmat(b,r,1);  %repeat the sequence in each row
d=0:10:10*r-1;    %create vector with sum values
e=repmat(d,6,1)'; %create array from vector
f=(c+e)';         %now all in the right place do the sum
f(:)'             %put the values in just a vector
0 comentarios
  Andrei Bobrov
      
      
 el 7 de Ag. de 2011
        a=1:90;
k = reshape(a,10,[]);
k(1:3:end,:)=[];            
c = k(:)'
ADD
a = reshape(1:90,10,[])';
c = [];
for j1 = 1:size(a,1)
   for j2 = 1:3
      c = [c a(j1,j2*3-[1 0])];
   end
end
MORE
a = reshape(1:90,10,[]);
c=reshape(a(bsxfun(@minus,(3:3:9),[1 0]'),:),1,[])
0 comentarios
Ver también
Categorías
				Más información sobre Loops and Conditional Statements 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!





