for mat in matlab error"尝试访问索引越界,因为......"

时间:2014-11-09 19:42:58

标签: matlab

我是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

问题是什么,你觉得呢? 任何帮助真的很合适 问候。

1 个答案:

答案 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/2for i = 1 : n/2会有所帮助。