how to divide data array into a number of blocks like this using a For Loop?
3 次查看(过去 30 天)
显示 更早的评论
Please consider this:
N=16;
data=[1:N] % original data array 1xN
nb=[1,2,4,8] % number of data blocks
output: I want to divide my data (1x16) into different blocks=1,2,4,8 like this:
% output blocks as nob1,nob2,nob4,nob8
% nob1 is as it is (1x16)
% All output blocks have same columns (N=16)
i.e.,
nob1=[1:16] % no division of data
nob2=[1 2 3 4 5 6 7 8 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 9 10 11 12 13 14 15 16]
nob4=[1 2 3 4 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 5 6 7 8 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 9 10 11 12 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 13 14 15 16]
nob8=[1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 3 4 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 5 6 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 7 8 0 0 0 0 0 0 0 0
....
....
0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 16]
Please help me to do so. ( Using a loop for nb=[ 1,2,4,8 ] )
And also the generalized script or function for any value of N (for e.g., N=256 or N=1024)
0 个评论
采纳的回答
Azzi Abdelmalek
2013-11-17
编辑:Azzi Abdelmalek
2013-11-17
N=16
nb=[1 2 4 8]
data=1:N
for k=1:numel(nb)
ii=nb(k);
v=zeros(ii,N)
for p=1:size(v,1)
idx=(p-1)*N/ii+1:p*N/ii;
v(p,idx)=data(idx);
end
out{k}=v;
end
celldisp(out)
更多回答(1 个)
Image Analyst
2013-11-17
See the FAQ which addresses this very very common question: http://matlab.wikia.com/wiki/FAQ#How_do_I_split_an_image_into_non-overlapping_blocks.3F
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!