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)的输出。
任何机构都可以提供帮助。
问候
打印frameData'的'在每一步,并在环的尺寸和'X',希望你将调试代码你自己:)。 – Nishant
添加到Nishant所说的内容中,您需要在每次迭代时检查'1:m-startAtIdx + 1'和'startAtIdx:end'的值,并确保它们跨越相同大小的范围。要么使用调试器,要么将其打印出来。 – Dan