我需要调用使用 linspace 命令制作的矩阵的索引,并基于从示波器中获取的一些数据。因此,输入的数据是 double 的。但是,我真的不能打电话:

Time[V0Found]

其中 V0Found 类似于 5.2 但是,采用索引 5 已经足够接近了,所以我需要去掉小数点。我用这个方程去掉小数:
V0FoundDec = V0Found - mod(V0Found,1)
Time[V0FoundDec]

然而,即使这降低了小数点, Octave 仍然提示它。

那么,我该怎么做才能将其类型转换为 int?

最佳答案

在 MATLAB 中,它应该是 int8(x)int16(x)one of the other integer casts

但是我很惊讶您需要为索引执行此操作。尝试

myarray(floor(indexlist))

或者
myarray(round(indexlist))

其中 myarray 是您的数组,而 indexlist 是您的非整数索引向量。

例子:
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

关于arrays - 在 Octave/Matlab 中类型转换为 int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2556811/

10-11 05:14