create vector from each element it had

9 views (last 30 days)
Hi
Lets say I have a vector that goes: [x y z]
Im trying to create, if possible without a loop, the following vec: [1:x, 1:y, 1:z]
only I don't know who x y or z will ne, or how many elemnts will the first vec have
  2 Comments
TADA
TADA on 9 Jun 2020
What's wrong with your solution:
[1:x, 1:y, 1:z]
?
Maya Harel
Maya Harel on 9 Jun 2020
the problem is that I don't define how many elements the first vec will have, It will ne detarmined randomly

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 9 Jun 2020
Edited: Stephen23 on 9 Jun 2020
Method one: nonzeros:
vec = [x,y,z];
tmp = 1:max(vec);
new = nonzeros((tmp(:)<=vec).*tmp(:)).' % requires >=R2016b
Method two: arrayfun:
new = cell2mat(arrayfun(@(n)1:n,vec,'uni',0))

More Answers (1)

David Hill
David Hill on 9 Jun 2020
Edited: David Hill on 9 Jun 2020
  1 Comment
Maya Harel
Maya Harel on 9 Jun 2020
thank you, but I think I didn't make myself clear, I mean that I want the new vec to go like the following exemple:
oldVec = [3,4,2]
newVec = [1,2,3,1,2,3,4,1,2]

Sign in to comment.

Categories

Find more on App Building 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!