![]() |
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(hj)/256; S(k)=sum(X); end end fclose(fileId); [B]回答:[/B] 在外循环的每次迭代中,您似乎在从空开始的第4维imgYuv增长1。但是您的内部循环始终从1循环到nFrames-1 。因此,在我看来,您似乎正在尝试超出imgYuv的范围。 无关紧要的是,增长这样的数组通常非常缓慢。您最好在开始之前初始化imgYuv ,即imgYuv = zeros([height,width,3,nFrames]) 。 [url=https://stackoverflow.com/questions/3911300]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 09:08。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.