for loop help
    8 views (last 30 days)
  
       Show older comments
    
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 Comments
Answers (8)
  Neels
      
 on 7 Aug 2011
        hi James, can you tell if the series follows a specific sequence or just some random values
0 Comments
  Tim Mottram
 on 7 Aug 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 Comments
  Tim Mottram
 on 7 Aug 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
      
      
 on 7 Aug 2011
        for i = 0:90
  if all(mod(i, 10) ~= [0,1,4,7])
    disp(i)
  end
end
2 Comments
  Jan
      
      
 on 7 Aug 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
      
      
 on 7 Aug 2011
        Another method:
for a = 0:10:80
  for b = [2,3,5,6,8,9]
    k = a + b;
    disp(k);
  end
end
0 Comments
  Jan
      
      
 on 7 Aug 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 Comments
  Paulo Silva
      
 on 7 Aug 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 Comments
  Andrei Bobrov
      
      
 on 7 Aug 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 Comments
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!