Error: using abs Complex integers are not supported
Error: using abs Complex integers are not supported
我使用“audioread(filename, 'native')”获得 class:int16 类型的数据,这是一个数据 IQIQIQ... 流。然后,我使用 complex(I, Q) 来形成复杂的数据样本。当我执行 abs(complex(I, Q)) 获取样本幅度时,出现错误:“错误:不支持使用 abs 复数整数”。关于如何解决这个问题有什么建议吗?
在调用 abs()
之前将 complex(I,Q)
转换为 double 可能是一种选择。然后可以将结果重新转换为 int16
类型。我相信 abs()
函数需要 double
、complex double
或 single
作为输入来计算幅度。由于数据很复杂,因此唯一允许的类型是 singles
和 doubles
。假设您正在寻找复杂数据的量级,这可能就足够了。如果您只想在调用 complex()
之前在 channels/vectors I
和 Q
上调用 abs()
的组件的绝对值可能是一个选项。
转换为类型 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
我使用“audioread(filename, 'native')”获得 class:int16 类型的数据,这是一个数据 IQIQIQ... 流。然后,我使用 complex(I, Q) 来形成复杂的数据样本。当我执行 abs(complex(I, Q)) 获取样本幅度时,出现错误:“错误:不支持使用 abs 复数整数”。关于如何解决这个问题有什么建议吗?
在调用 abs()
之前将 complex(I,Q)
转换为 double 可能是一种选择。然后可以将结果重新转换为 int16
类型。我相信 abs()
函数需要 double
、complex double
或 single
作为输入来计算幅度。由于数据很复杂,因此唯一允许的类型是 singles
和 doubles
。假设您正在寻找复杂数据的量级,这可能就足够了。如果您只想在调用 complex()
之前在 channels/vectors I
和 Q
上调用 abs()
的组件的绝对值可能是一个选项。
转换为类型 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