Subscript indices must either be real positive integers or logicals.
    5 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I get returned from a function I call the "pixel location".
At that location, what I try to do is:
A(pixel_location(1),pixel_location(2))=1;
But, I get the following error:
Subscript indices must either be real positive integers or logicals.
Why is that? How can I solve this issue?
0 Commenti
Risposte (3)
  Star Strider
      
      
 il 8 Feb 2015
        Your ‘pixel_location’ vector likely contains values that are not integers greater than 0. Negative values, non-integer values, and zero are not valid subscripts in MATLAB array indexing.
2 Commenti
  Star Strider
      
      
 il 8 Feb 2015
				A conditional statement might be able to check to be certain that particular pairs from ‘pixel_location’ are positive integers, but what does that do to your code?
I would see what ‘pixel_location’ contains, and correct it if possible. For instance if it contains integers with negative values or zero, adding a positive offset to be the minimum of ‘pixel_location’+1 would correct the problem. (You may have to make appropriate changes elsewhere in your code to account for that.) If it contains non-integer values, you would have to make other changes (perhaps scaling and rounding) to make them work as indices.
Since I don’t know what ‘pixel_location’ contains, I cannot be more specific than that.
  Erik S.
      
 il 8 Feb 2015
        Check the values of pixel_location(1) and pixel_location(2). I guess you find either the value 0 or a decimal value. Indexes have to be integers.
4 Commenti
  Erik S.
      
 il 8 Feb 2015
				If you can formulate a conditional statement which is updated each iteration as well it could work. But if you don't know which values are correct for pixel_location in each iteration it seems difficult.
  Image Analyst
      
      
 il 8 Feb 2015
        Try to round the values (if they might be fractional values) and clip the values to between your image limits:
[rows, columns, numberOfColorChannels] = size(yourImage);
pixel_location = round(pixel_location) % Round.
pixel_location(1) = min(pixel_location(1), rows);     % Don't allow more than rows.
pixel_location(1) = max(pixel_location(1), 1);        % Don't allow less than 1.
pixel_location(2) = min(pixel_location(2), columns);  % Don't allow more than columns.
pixel_location(2) = max(pixel_location(2), 1);        % Don't allow less than 1.
0 Commenti
Vedere anche
Categorie
				Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



