在Matlab(我的版本恰好是R2010b)中,可以将复杂的double转换为复杂的int16类型,如下所示:
>> a = 8.3+4.9j;
>> ai16 = int16(a)
ai16 =
8 + 5i
>> whos ai16
Name Size Bytes Class Attributes
ai16 1x1 4 int16 complex
即。 ai16是一个复杂的int16类型(相当于C ++ complex< short>)。
Octave(版本4.0.0)不喜欢这一点:
>> ai16 = int16(a)
error: invalid conversion from complex scalar to int16 scalar
我正在尝试将一些传统的Matlab代码移植到Octave。有没有人建议如何以无痛的方式解决这个问题?我想到了这个:
ai16.real = int16(real(a));
ai16.imag = int16(imag(a));
但是这会在代码库中传播很多痛苦。有许多数组已从复数double转换为复数int16。这些数组用于许多计算中。