Matlab code natural numbers subset

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 3K views
martika
Messages
2
Reaction score
0
I have array of natural numbers from 1 to n.
They are divided into m groups, where m*(m-1)=n.
I need all m-1 elements from first group, last m-2 elements from second group, last m-3 elements from third group...zero elements from last group.
For example
5*4=20:
1,2,3,4; 5,6,7,8; 9,10,11,12; 13,14,15,16; 17,18,19,20;.
I need 1,2,3,4; 6,7,8; 11,12; 16;
Thanks!
 
Physics news on Phys.org
Here is a brute force, inelegant, solution to your problem using cell arrays to hold to the final values since they are not equal in size. Do with it as you will :p

Code:
m = 5;
n = m*(m-1);
numbers = 1:n;

for i = 1:m
    
    j = i-1;
    
    group(i,:) = numbers((m-1)*j+1:(m-1)*i);
    
    group_ends{i} = group(i,i:end);
    
end