Split variable length vector by parts
2 次查看(过去 30 天)
显示 更早的评论
So it's probably an easy solution, but can't really find the answer that quick.
I have the following vector:
V = [1 2 3 4 5 ... n];
P = ceil(length(V/127)); %dont know if ceil or floor is better
And then I want to split the vector `V` in parts `P`, so that I'll get something like the following:
% as an example n = 2184 & P = 17
C = {[1 2 3 ... 18],[18 19 20 ... 35],...[2167 2168 2169 ...2184]};
Thanks in advance
1 个评论
Ameer Hamza
2018-4-25
编辑:Ameer Hamza
2018-4-25
You mentioned that P=17 but your first element of C contain 18 elements. What to do, if elements of V can't be divided properly, e.g. 2184/17 is not an integer. How do you want to handle it?
采纳的回答
dpb
2018-4-25
L-length(V);
P=17;
id2=[repmat(P,1,fix(L/P)) rem(L,P)]; % number elements in cell size P matching L plus remainder
C=mat2cell(V,1,id2);
That's for the nearest multiple of P with whatever is left over tacked onto the end irregardless of its size relative to P. If it's needed to make as near even as possible need more logic to choose the bin size; that's not a given criterion in the question posed, however.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!