Clear Filters
Clear Filters

What's the best way to create a vector with a repeating and diminutive sequence?

2 views (last 30 days)
For a small example, how to create a version of this, with a longer seequence. These are integers of equal length apart:
v = 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 ....
and the starting sequence length will be scaled up into the 100s or 1000s.
Any thoughts?

Accepted Answer

Matt Fig
Matt Fig on 3 Jun 2011
N = 6;
A = cumsum(tril(ones(N,'single')));
A = A(A>0).';
If memory is a concern, this will conserve it:
L = (N^2+N)/2;
B = ones(1,L);
idx = (1:N).*((1:N)-1)/2;
Li = length(idx);
B(idx(2:Li)) = -(1:Li-1);
B = cumsum(B(L:-1:1));
  2 Comments
Adam Quintero
Adam Quintero on 3 Jun 2011
I see where the initial sequence length is, and I am wondering how it would work if I wanted the sequence to decrease from the origin.
So:
v= [1 2 3 4 5 6 2 3 4 5 6 3 4 5 6 4 5 6 5 6 6]
I tried changing the sign of the 6 and the A>0 to A<0, and they didn't work. I think it shows here that I have a lot to learn. I appreciate the patience of anyone with feedback on this.
Thanx
Matt Fig
Matt Fig on 3 Jun 2011
In that case, just reverse the order of two operations:
A = tril(cumsum(ones(N,'single')));

Sign in to comment.

More Answers (0)

Categories

Find more on Line Plots 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!