Ich habe diesen Matlab-Code geschrieben, um eine Bildmatrix in eine kleinere Matrix der Größe 787x1000 zu unterteilen.Subskribiertes Zuweisungsdimensions-Mismatch in Matlab Warum?
in der folgenden Code: zuerst werde ich ein Bild so I_in = 512x512x3 lesen, dann ändere ich es in binäre und umformen es zu sein (6291456x1), danach habe ich die Anzahl der Frames berechnet (1 Frame = 1000x1) so Ich brauche 787. Dann weise ich der Rahmenmatrix Speicher zu. Code
I_in = imread('aaaa.png');
% encoding image into array of bits
B = de2bi(I_in);
X=reshape(double(B),numel(B),1);
m= length(B);
numFrames = floor((m-1)/1000)+1;
% allocate memory to the frame matrix
frameData = zeros(numFrames,1000);
for k=1:numFrames
startAtIdx = (k-1)*1000+1;
if k~=numFrames
frameData(k,:) = X(startAtIdx:startAtIdx+1000-1);
else
% handle this case separately in case the number of input samples
% does not divide evenly by the window size
frameData(k,1:m-startAtIdx+1) = X(startAtIdx:end);
end
end
leicht hier Schritte erklären, wenn ich dies ausführen wird es mir diese Fehlermeldung zeigt:
indizierte Zuweisung Dimension stimmen nicht überein.
Fehler in Untitled1 (Zeile 20) frameData (k, 1: m-startAtIdx + 1) = X (startAtIdx: Ende);
ich bin ziemlich nicht wirklich sicher, dass der Ausgang, den ich schrieb, mir eine Ausgabe von frameData (1x1000) geben wird.
Jeder Körper kann dabei helfen.
Grüße
Drucken, um die Dimensionen der 'frameData' und 'X' bei jedem Schritt und in der Schleife versuchen und hoffentlich werden Sie Ihren Code debuggen dich selber :) . – Nishant
Hinzufügen zu dem, was Nishant sagte, müssen Sie die Werte von "1: m-startAtIdx + 1" und "startAtIdx: end" bei jeder Iteration überprüfen und sicherstellen, dass sie die gleichen Größenbereiche umfassen. Verwenden Sie den Debugger oder drucken Sie sie einfach aus. – Dan