2016-05-26 8 views
0

私は、イメージ行列をサイズ787x1000のより小さい行列に分割するこのmatlabコードを書いています。matlabの添字付きディメンションの不一致がなぜですか?

以下のコードでは、最初にI_in = 512x512x3のイメージを読み込み、バイナリに変更して(6291456x1)に変更します。必要なフレーム数(1フレーム= 1000x1)私は787が必要です。次に、私はフレームマトリックスにメモリを割り当てます。

添字割り当て寸法の不一致:私はこれを実行すると、コードは、それが私にこのエラーが表示されますされます簡単にここ

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 

の手順を説明します。

Untitled1(行20)のエラー frameData(k、1:m-startAtIdx + 1)= X(startAtIdx:end);

私が書いた出力が私にframeData(1x1000)の出力を与えるとは本当に確かではありません。

どのようなボディもこれに役立ちます。

よろしく

+2

各ステップで、ループに 'frameData'と 'X'の寸法を印刷し、うまくいけば、あなたのコードをデバッグしますしてみてくださいあなた自身:)。 – Nishant

+0

Nishantが言ったことに加えて、各反復で '1:m-startAtIdx + 1'と' startAtIdx:end'の値をチェックし、それらが同じサイズの範囲にまたがっていることを確認する必要があります。デバッガを使用するか、または単に出力してください。 – Dan

答えて

0

m = numel(B); 

代わりの

m = length(B); 
関連する問題