Effacer les filtres
Effacer les filtres

How to solve this error (index must be a positive integer or logical)?

1 vue (au cours des 30 derniers jours)
Mei Synn Tan
Mei Synn Tan le 13 Avr 2017
Modifié(e) : Mei Synn Tan le 13 Avr 2017
function s = subim(f, m, n, rx, cy)
%SUBIM Extracts a subimage, s, from a given image, f.
%The subimage is of size m-by-n, and the coordinates of its top, left corner are (rx, cy).
s = zeros(m, n);
rowhigh = rx + m - 1;
colhigh = cy + n - 1;
xcount = 0;
for r = rx:rowhigh
xcount = xcount + 1;
ycount = 0;
for c = cy:colhigh
ycount = ycount + 1;
s(xcount, ycount) = f(r, c);
end
end
I am try to run the code, but this got error. Attempted to access f(0,0); index must be a positive integer or logical.
f = imread('13100.jpg');
[m,n]=size(f);
s = zeros(m, n);
rx = 0;
cy = 0;
s = zeros(m, n);
rowhigh = rx + m - 1;
colhigh = cy + n - 1;
xcount = 0;
for r = rx:rowhigh
xcount = xcount + 1;
ycount = 0;
for c = cy:colhigh
ycount = ycount + 1;
s(xcount, ycount) = f(r, c);
end
end
%
  1 commentaire
Stephen23
Stephen23 le 13 Avr 2017
@Mei Synn Tan: rather than doing this in a loop you should use indexing with vectors. Also note that images are often 3D, which your code does not take into account.

Connectez-vous pour commenter.

Réponse acceptée

KSSV
KSSV le 13 Avr 2017
Modifié(e) : KSSV le 13 Avr 2017
This:
rx = 0;
cy = 0;
Should be
rx = 1;
cy = 1;
You are taking indices 0, note that, matlab will not take -ve or zero indices. Indices should be +ve integers.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by