How do I tell Matlab a loop index is an integer?

19 visualizzazioni (ultimi 30 giorni)
I am perplexed by the fact that niether loop indeces or the number 3 are considered integers.
The script (called WhyNotIntegers)
for i = 1:3
idivide(i,3,'round')
end
produces these errors when run:
Error using idivide>idivide_check (line 66)
At least one argument must belong to an integer class.
Error in idivide (line 42)
idivide_check(a,b);
Error in WhyNotIntegers (line 2)
idivide(i,3,'round')
Error in run (line 96)
evalin('caller', [script ';']);

Risposta accettata

Image Analyst
Image Analyst il 22 Feb 2019
They're doubles that just happen to have integer values. Convert them to integers since that's what idivide wants. Try this:
for k = 1:3
idivide(int32(k), int32(3),'round')
end
  1 Commento
Alexander MacFarlane IV
Alexander MacFarlane IV il 22 Feb 2019
Thanks to both of you for the fast answers.
Stephan got there first, but this told me exactly what I needed to do.
Alex

Accedi per commentare.

Più risposte (1)

Stephan
Stephan il 22 Feb 2019
Modificato: Stephan il 22 Feb 2019
Hi,
by default numbers in Matlab are double. cast them to integer:
int32(i)
Read here:
Best regards
Stephan

Prodotti


Release

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by