嘿,夥計們,當我試圖觸發下面的函數時,我得到了這個錯誤消息。有人可以幫我嗎?謝謝!MATLAB編碼問題
>> changeYuv('tilt.yuv',352,288,1:40,40);
??? Index exceeds matrix dimensions.
Error in ==> changeYuv at 32
j=histogram(imgYuv(:,:,1,k+1));
>> [x,y,z,a]=size(imgYuv)
x =
288
y =
352
z =
3
a =
40
的源代碼:
function [imgYuv, S]= changeYuv(fileName, width, height, idxFrame, nFrames)
% load RGB movie [0, 255] from YUV 4:2:0 file
fileId = fopen(fileName, 'r');
subSampleMat = [1, 1; 1, 1];
nrFrame = length(idxFrame);
for f = 1 : 1 : nrFrame
% search fileId position
sizeFrame = 1.5 * width * height;
fseek(fileId, (idxFrame(f) - 1) * sizeFrame, 'bof');
% read Y component
buf = fread(fileId, width * height, 'uchar');
imgYuv(:, :, 1,f) = reshape(buf, width, height).';
% read U component
buf = fread(fileId, width/2 * height/2, 'uchar');
imgYuv(:, :, 2,f) = kron(reshape(buf, width/2, height/2).', subSampleMat); % reshape and upsample
% read V component
buf = fread(fileId, width/2 * height/2, 'uchar');
imgYuv(:, :, 3,f) = kron(reshape(buf, width/2, height/2).', subSampleMat); % reshape and upsample
%histogram difference of Y component
for k=1:(nFrames-1)
h=histogram(imgYuv(:,:,1,k));
j=histogram(imgYuv(:,:,1,k+1));
X=abs(h-j)/256;
S(k)=sum(X);
end
end
fclose(fileId);
請在錯誤行上方的某處運行'[x,y,z,a] = size(imgYuv)'並告訴我們'a'的值。 – 2010-10-12 02:42:31
嗨馬克。我已經添加了imgYuv的大小。它有幫助嗎? – view 2010-10-12 02:46:31