Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

Magnitude-Angle to Complex

将幅值和/或相位角信号转换为复信号

  • Magnitude-Angle to Complex block

库:
Simulink / Math Operations
HDL Coder / HDL Floating Point Operations

描述

支持的运算

Magnitude-Angle to Complex 模块可将幅值和相位角输入转换为复数输出。角度输入必须以弧度为单位。

当有两个模块输入时,模块支持输入维度的以下组合:

  • 两个输入具有相同的维度

  • 一个输入为标量,另一个为 n 维数组

如果模块输入为数组,则输出是复信号数组。幅值输入向量的元素映射到对应的复数输出元素的幅值。同样,角度输入向量的元素映射到对应的复数输出元素的角度。如果一个输入是标量,它将映射到所有复数输出信号的对应分量(幅值或角度)。

超出范围的输入对 CORDIC 逼近方法的影响

如果使用 CORDIC 逼近方法 [1],相位角的模块输入有以下限制:

  • 对于有符号定点类型,角度输入必须在 [–2π, 2π) 弧度范围内。

  • 对于无符号定点类型,角度输入必须在 [0, 2π) 弧度范围内。

下表总结了超出范围的输入的影响:

模块用法输入超出范围时的影响
仿真模式出现错误。
生成的代码发生未定义的行为。

当您使用 CORDIC 逼近方法时,请确保 Magnitude-Angle to Complex 模块的输入在规定的范围内。对于生成的代码或加速模式,避免依赖未定义的行为。

端口

输入

全部展开

幅值,指定为实数值标量、向量或矩阵。

依存关系

  • 要启用此端口,请将输入设置为幅值和角度

限制

  • 如果一个输入具有浮点数据类型,则另一个输入也必须使用相同的数据类型。例如,两个信号都必须为 doublesingle

  • 仅当逼近方法设置为 CORDIC 时才支持定点数据类型。当一个输入具有定点数据类型时,另一个输入也必须具有定点数据类型。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

相位角弧度,指定为实数值标量、向量或矩阵。要计算 CORDIC 逼近,角度输入必须满足以下条件:

  • 对于有符号定点类型,弧度必须介于 [–2π, 2π) 之间

  • 对于无符号定点类型,弧度必须介于 [0, 2π) 之间

有关详细信息,请参阅超出范围的输入对 CORDIC 逼近方法的影响

依存关系

  • 要启用此端口,请将输入设置为幅值和角度

限制

  • 如果一个输入具有浮点数据类型,则另一个输入也必须使用相同的数据类型。例如,两个信号都必须为 doublesingle

  • 仅当逼近方法设置为 CORDIC 时才支持定点数据类型。如果一个输入具有定点数据类型,另一个输入也必须具有定点数据类型。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

幅值或相位角弧度,指定为实数值标量、向量或矩阵。

  • 输入设置为幅值时,请在输入端口上指定幅值,在对话框中指定角度。

  • 输入设置为角度时,请在输入端口上指定角度,在对话框中指定幅值。

依存关系

要启用此端口,请将输入设置为幅值角度

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

输出

全部展开

复信号,由您指定的幅值和相位角构成。

如果模块输入为数组,则输出是复信号数组。幅值输入向量的元素映射到对应的复数输出元素的幅值。同样,角度输入向量的元素映射到对应的复数输出元素的角度。如果一个输入是标量,它将映射到所有复数输出信号的对应分量(幅值或角度)。

数据类型: single | double | fixed point

参数

全部展开

指定输入的类型:幅值输入、角度输入或者同时输入幅值和角度。

编程用法

模块参数Input
类型:字符向量
值:'Magnitude' | 'Angle' | 'Magnitude and angle'
默认值:'Magnitude and angle'

输出信号的常量相位角,以弧度为单位。要计算 CORDIC 逼近,角度输入必须满足以下条件:

  • 对于有符号定点类型,弧度必须介于 [–2π, 2π) 之间

  • 对于无符号定点类型,弧度必须介于 [0, 2π) 之间

有关详细信息,请参阅超出范围的输入对 CORDIC 逼近方法的影响

依存关系

要启用此参数,请将输入设置为幅值

编程用法

模块参数ConstantPart
类型:字符向量
值:常量标量
默认值:'0'

输出信号的常量幅值,指定为实数值标量、向量或矩阵。

依存关系

要启用此参数,请将输入设置为角度

编程用法

模块参数ConstantPart
类型:字符向量
值:实数值标量、向量或矩阵
默认值:'0'

指定计算输出的逼近方法类型。

逼近方法支持的数据类型何时使用此方法
(默认值)

浮点

您想使用默认的泰勒级数算法。

CORDIC

浮点和定点

您需要快速的近似计算时。

使用 CORDIC 逼近时,角度输入需满足以下原则:

  • 对于有符号定点类型,角度输入必须在 [–2π, 2π) 弧度范围内。

  • 对于无符号定点类型,角度输入必须在 [0, 2π) 弧度范围内。

此模块使用以下数据类型传播规则:

幅值输入的数据类型逼近方法复数输出的数据类型

浮点

CORDIC

与输入相同

有符号、定点

CORDIC

fixdt(1, WL +2, FL)

其中 WLFL 是幅值的字长和小数长度

无符号、定点

CORDIC

fixdt(1, WL +3, FL)

其中 WLFL 是幅值的字长和小数长度

编程用法

模块参数ApproximationMethod
类型:字符向量
值:'None' | 'CORDIC'
默认值:'None'

要执行 CORDIC 算法的迭代次数。可能值的范围取决于输入的数据类型:

模块输入的数据类型您可以指定的值
浮点正整数
定点不超过幅值输入字长或相位角输入字长(二者中取较小值)的正整数

依存关系

要启用此参数,请将逼近方法设置为 CORDIC

编程用法

模块参数NumberOfIterations
类型:字符向量
值:正整数,小于等于定点输入的字长
默认值:'11'

选中此复选框,以便按缩放因子 (1/CORDIC gain) 缩放复数输出的实部和虚部。此值取决于您指定的迭代次数。随着迭代次数的增加,值将接近于 1.647。

此复选框默认处于选中状态,从而使得复数输出 X + iY 得到数值意义上更为精确的结果。但是,缩放输出增加了两个额外的乘法运算,一个针对 X,另一个针对 Y

依存关系

要启用此参数,请将逼近方法设置为 CORDIC

编程用法

模块参数ScaleReciprocalGainFactor
类型:字符向量
值:'on' | 'off'
默认值:'on'

指定采样时间间隔。要继承采样时间,请将此参数设置为 -1。有关详细信息,请参阅指定采样时间

依存关系

仅当您将此参数设置为 -1 以外的值时才可见。要了解详细信息,请参阅不建议设置采样时间的模块

编程用法

模块参数:SampleTime
类型:字符串标量或字符向量
默认值:"-1"

模块特性

数据类型

double | single

直接馈通

多维信号

可变大小信号

过零检测

详细信息

全部展开

参考

[1] Volder, Jack E., “The CORDIC Trigonometric Computing Technique.” IRE Transactions on Electronic Computers EC-8 (1959); 330–334.

[2] Andraka, Ray “A Survey of CORDIC Algorithm for FPGA Based Computers.” Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays. Feb. 22–24 (1998): 191–200.

[3] Walther, J.S., “A Unified Algorithm for Elementary Functions,” Proceedings of the Spring Joint Computer Conference, May 18-20, 1971: 379–386.

[4] Schelin, Charles W., “Calculator Function Approximation,” The American Mathematical Monthly 90, no. 5 (1983): 317–325.

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出