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?
  1 件のコメント
darova
darova 2020 年 2 月 20 日
try mat2cell

サインインしてコメントする。

採用された回答

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 Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by