我是matlab的新手。 我写了一个函数。 当我在第一个FOR工作区运行我的函数时,我收到此错误:
??? Attempted to access XX(461,:); index out of bounds because
size(XX)=[460,440,3].
Error in ==> FOH_Zoom at 10
XX(j,:)=(XX(2*j-1,:)+XX(2*j+1,:))/2;
这是我的功能:
function XX = FOH_Zoom(img)
X = ones(size(img)); %make a matrix of ones as size as image
XX=imresize(X,2); %make size of matrx double
[a,b]=size(X); %get the size of matrix
XX(1:2:end,1:2:end)=img(:,:); % fill odd rows and columns with original image data
[m,n]=size(XX);
for j=1:m-1
XX(j,:)=(XX(2*j-1,:)+XX(2*j+1,:))/2;
end
for i=1:n
XX(:,i)=(XX(:,2*i-1)+XX(:,2*i+1))/2;
end
imshow(XX); % show image
title([num2str(m),' *** ',num2str(n)]);
end
问题是什么,你觉得呢? 任何帮助真的很合适 问候。
答案 0 :(得分:0)
您的XX
是3D,因此您必须使用size
这样的
[m,n,~]=size(XX);
由于:
XX=zeros(460,440,3);
[m,n]=size(XX)
m = 460
n = 1320
虽然
[m,n,~]=size(XX)
m = 460
n = 440
第二个问题
你在第10行,
XX(j,:)=(XX(2*j-1,:)+XX(2*j+1,:))/2;
当m = 231
然后2xm-1 = 461
时,您将收到错误的错误,
我不知道您想做什么,但更改for j = 1 : m/2
和for i = 1 : n/2
会有所帮助。