常规向量索引超出数组范围-MATLAB

时间:2018-11-22 17:54:35

标签: matlab

我在Matlab中构建了一些用于“直方图匹配”的程序。
当我尝试实现功能“ conVector”时,出现错误 “索引超出数组范围。”有人可以帮助我解决这个错误吗?

这是我的完整代码。谢谢!

function [newImage] = histShape (srcimg,destimg)
%find the histogram of the image

src = imgHist(srcimg);
dest = imgHist(destimg);

sna = normalizationHist(src);
dna = normalizationHist(dest);

conVector(sna,dna);

end

function [Hist] = imgHist (img)
[Rows,Cols] = size(img);
Hist = zeros(1,256);
for i=1:Rows
    for j=1:Cols
        Hist(img(i,j)+1)=Hist(img(i,j)+1)+1;
    end
end

end


function [Ahist] = normalizationHist (hist)
[Rows,Cols] = size(hist);
Ahist = hist;
for i=2:256
    Ahist(i)=Ahist(i-1)+hist(i);
end

Ahist = Ahist/(Rows*Cols);

end

function [cv] = conVector(SNA,DNA)
cv=zeros(1,257);
s = 1;
d = 1;
while s<=256
    if DNA(d)<SNA(s)
        d = d+1;
    else
        cv(s)=d;
        s = s+1;

    end
end
end

1 个答案:

答案 0 :(得分:0)

如果DNA(d:end)中的所有值都比循环中的SNA(s)中的值小,则继续对d加1,但不对s加1,最后超出界限因为它仅以s为条件。

我想您应该从内部条件中取出s = s+1,以便在每次迭代时执行,或者在循环中添加d上的条件,或者将其转换为{ {1}}循环。