如何在八度音程中创建复杂的int16数字?

时间:2015-06-18 18:59:17

标签: matlab octave short complextype

在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。这些数组用于许多计算中。

0 个答案:

没有答案