I need to call the index of a matrix made using the linspace command, and based on some data taken from an oscilloscope. Because of this, the data inputed is a double. However, I can't really call:
Time[V0Found]
where V0Found is something like 5.2 however, taking index 5 is close enough, so I need to drop the decimal. I used this equation to drop the decimal:
V0FoundDec = V0Found - mod(V0Found,1)
Time[V0FoundDec]
However, even though that drops the decimal, octave still complains about it.
So, what can I do to typecast it to an int?
In MATLAB, it should be int8(x) or int16(x) or one of the other integer casts.
But I'm surprised you need to do that for an index. Try
myarray(floor(indexlist))
or
myarray(round(indexlist))
where myarray is your array and indexlist is your vector of noninteger indices.
example:
octave-3.2.3:8> v=rand(1,8)*10+1
v =
3.1769 1.4397 8.7504 1.7424 6.9413 3.1663 8.4085 9.0179
octave-3.2.3:9> a = (1:1:20).^2
a =
Columns 1 through 15:
1 4 9 16 25 36 49 64 81 100 121 144 169 196 225
Columns 16 through 20:
256 289 324 361 400
octave-3.2.3:10> a(floor(v))
ans =
9 1 64 1 36 9 64 81
You could use round, floor, ceil functions instead of your formula to do the rounding.
By the way, indexing is done using parenthesis instead of brackets so:
V0FoundDec = round(V0Found);
Time(V0FoundDec) % not Time[V0FoundDec]
In case that was your problem
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With