2016-04-09 11 views
1

Ich habe eine Matrix der Größe 1134-by-1134, die ich von einem Bild (mit imread Funktion) erhalten. Jetzt möchte ich das Bild in 3-mal-3-Matrizen zur Analyse aufteilen. Um das zu tun, habe ich versucht, mat2cell wie folgt zu verwenden.mat2cell Eingabe Argument Fehler

image = imread('C:\Users\ka\Desktop\test\step.png'); 
X = mat2cell(image, [3], [3]); 

Aber ich habe einen Fehler:

Error using mat2cell (line 97) Input arguments, D1 through D2, must sum to each dimension of the input matrix size, [1134 1134].'

Jede Hilfe würde geschätzt.

Antwort

0

Die Fehlermeldung sagt wirklich alles: jeder der Eingänge zu mat2cell muss zur Größe des gesamten Bildes, in diesem Fall 1134 (und 1134) summieren. Weitere Informationen finden Sie unter documentation.

Ich glaube, was Sie tun möchten, ist:

sz = [1134 1134]; % size of input image 
I = rand(sz); % make up some random data for testing 
chunk_size = [3 3]; % your desired size of the chunks image is broken into 
sc = sz ./ chunk_size; % number of chunks in each dimension; must be integer 

% split to chunk_size(1) by chunk_size(2) chunks 
X = mat2cell(I, chunk_size(1) * ones(sc(1),1), chunk_size(2) *ones(sc(2),1)); 

die überprüfen lassen, dass die Ausgabe wie gewünscht ist:

size(X) % == sc 
size(X{1}) % == chunk_size 
sum(chunk_size(1) * ones(sc(1),1)) % 1134, as required 
sum(chunk_size(2) * ones(sc(2),1)) % 1134, as required 
+0

danke so sehr. für deine Hilfe. Ich habe viel gelernt. –