2016-05-26 48 views
0

我写了这个matlab代码,将图像矩阵分割成尺寸为787x1000的较小矩阵。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); 
相关问题