extracting particular row and column

I have a matrix like this
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
5 6 7 8
5 6 7 8
5 6 7 8
5 6 7 8
9 10 11 12
9 10 11 12
9 10 11 12
9 10 11 12
like that so many rows.I want to extract every 4 row and 4 column continuously for whole row and save it in excel file.For a single row it works b=a(1:1:4),:);but for all row how can it possible.

 Respuesta aceptada

Guillaume
Guillaume el 3 de Mayo de 2016
Do you mean?
b = a(1:4:end, :)

5 comentarios

Tanmoyee Bhattacharya
Tanmoyee Bhattacharya el 3 de Mayo de 2016
It will take every 4 th row.I want 1 to 4 row each time for 365 rows as I have 365 rows.
I really have no idea what you mean. Can you provide an example of the output you want?
b = a(1:4, :)
will give you row 1 to 4. I don't understand what "each time for 365 rows" mean.
Tanmoyee Bhattacharya
Tanmoyee Bhattacharya el 3 de Mayo de 2016
Editada: Tanmoyee Bhattacharya el 3 de Mayo de 2016
if true
% code
endSir one file will contain
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
another file will contain
5 6 7 8
5 6 7 8
5 6 7 8
5 6 7 8
third file will contain
9 10 11 12
9 10 11 12
9 10 11 12
like that 365 files will be generated with 4 row and column. For every 4 th row one file will be created.
if true
% code
end
Guillaume
Guillaume el 3 de Mayo de 2016
Editada: Guillaume el 3 de Mayo de 2016
I believe this is what you want:
assert(mod(size(a, 1), 4) == 0, 'number of rows is not a multiple of 4');
numcells = size(a, 1) / 4; %number of matrices generated
b = mat2cell(a, ones(1, numcells)*4, size(a, 2)); %split a into matrices
%save as excel file however you want, e.g.:
savepath = 'C:\wherever\you want\to save your files\');
for bidx = 1:numcells
xlswrite(fullfile(savepath, sprintf('%4d.xlsx', bidx)), b{bidx});
end
Tanmoyee Bhattacharya
Tanmoyee Bhattacharya el 4 de Mayo de 2016
Sir it is really fantastic.It works.

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 3 de Mayo de 2016
Guillaume's first answer gave you every 4th row extracted from the original, and all columns will be included. Perhaps when you say you "want to extract every 4 row and 4 column" you want this:
m4 = m(1:4:end, 1:4:end);
or
m4 = imresize(m, 0.25, 'nearest');
This will subsample the matrix by 4 in both the row and column direction.

Categorías

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by