how to divide data array into a number of blocks like this using a For Loop?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ved
am 17 Nov. 2013
Beantwortet: Image Analyst
am 17 Nov. 2013
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 Kommentare
Akzeptierte Antwort
Azzi Abdelmalek
am 17 Nov. 2013
Bearbeitet: Azzi Abdelmalek
am 17 Nov. 2013
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)
Weitere Antworten (1)
Image Analyst
am 17 Nov. 2013
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 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!