how can i split a 400*400 matrix into smaller one

조회 수: 2 (최근 30일)
alexandra khabbaz
alexandra khabbaz 2020년 2월 20일
댓글: alexandra khabbaz 2020년 2월 21일
i have a 400*400 matrix that i want to divid into smaller matrix 40*40.
In fact i have 1000 images that i want to do the same for all then find the corr2 between each sub matrix that is in the exact same position in each image.
any idea?

채택된 답변

Matt J
Matt J 2020년 2월 20일
편집: Matt J 2020년 2월 20일
You could do it as below, with the help of mat2tiles,
I assume you have your images stacked in the form of a 400x400x1000 array (single floats).
stack=rand(400,400,1000,'single'); %example data
substacks=mat2tiles(stack,[40,40,1000]) ; %divide the data into 40x40x1000 sub-stacks
correlationResults=cell(size(substacks)); %pre-allocate the result
for i=1:10
for j=1:10
columns=reshape(substacks{i,j},40^2,[]);
correlationResults{i,j}=corr(columns);
end
end
Note that I use corr instead of corr2. It makes things easier to vectorize.
  댓글 수: 2
alexandra khabbaz
alexandra khabbaz 2020년 2월 21일
i have a folder with 1000 images, i need to call tham out, resise them from 452*400 to 400*400 all of them;
then i shoud devide each one into 100, 40*40 matrix and correlate each submatrix with it's exat same in all the other images, so ishoud get 100 correlation plots. it's really difficult for me to do so since i'm so new to matlab
alexandra khabbaz
alexandra khabbaz 2020년 2월 21일
i started with this:
it worked for th first image but i dont know how to call all the other ones
nb=1000;
d4=zeros(1,nb);
image = imread('image1.tif');
a=size(image);
b=401;
im=image(2:b,:);
[m,n]=size(im);
C = mat2cell(im,[40 40 40 40 40 40 40 40 40 40],[40 40 40 40 40 40 40 40 40 40])

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Stijn Haenen
Stijn Haenen 2020년 2월 20일
what about this:
num_list=0:40:400;
data=[];
Image=zeros(400);
for a=1:numel(num_list)-1
for b=1:numel(num_list)-1
data(end+1).subimage=Image(num_list(a)+1:num_list(a+1),num_list(b)+1:num_list(b+1));
end
end
All the subimages are stored in a structure

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by