首页 > 解决方案 > 错误:不支持使用 abs 复杂整数

问题描述

我使用“audioread(filename, 'native')”获取类:int16 类型数据,这是一个数据 IQIQIQ... 流。然后,我使用 complex(I, Q) 来形成复杂的数据样本。当我执行 abs(complex(I, Q)) 来获取样本幅度时,出现错误:“错误:不支持使用 abs 复整数”。关于如何解决这个问题的任何建议?

标签: matlabsignal-processingtelecommunication

解决方案


在调用之前转换complex(I,Q)为 doubleabs()可能是一种选择。然后可以将结果重新转换为 type int16。我相信该abs()函数需要 a或double作为输入来计算幅度。由于数据很复杂,因此唯一允许的类型是和。假设您正在寻找复杂数据的大小,这可能就足够了。如果您只想获取调用通道/向量的组件的绝对值,并且在调用之前可能是一种选择。complex doublesinglesinglesdoublesabs()IQcomplex()

铸造为类型single

Audio = audioread("TETRA IQ.wav",'native');
I = Audio(:,1);
Q = Audio(:,2);

Complex_Pair = complex(I,Q);
Complex_Pair_Double = single(Complex_Pair);
Magnitude = uint16(abs(Complex_Pair_Double));

铸造为类型double

Audio = audioread("TETRA IQ.wav",'native');
I = Audio(:,1);
Q = Audio(:,2);

Complex_Pair = complex(I,Q);
Complex_Pair_Double = double(Complex_Pair);
Magnitude = uint16(abs(Complex_Pair_Double));

使用 MATLAB R2019b 运行


推荐阅读