如何使用 Real();复杂的();在 Matlab 中定义复数的函数?

Posted

技术标签:

【中文标题】如何使用 Real();复杂的();在 Matlab 中定义复数的函数?【英文标题】:How to use Real(); Complex(); functions to define a complex number in Matlab? 【发布时间】:2015-07-04 10:11:53 【问题描述】:

我来自音频的简单数字世界,我在 Matlab 编码器编译中发现复数错误:

左侧被限制为非复杂的,但右侧是复杂的。要纠正这个问题,请使用函数 REAL 使右侧为实数,或使用 COMPLEX 函数将左侧变量的初始赋值更改为复数。

在这种情况下我如何使用真正的功能?

tfr= zeros (N,tcol) ;  
for icol=1:tcol,
tfr(1,icol)= sum(g2 .* x(ti-points,1) .* conj(x(ti-points,xcol))); % error here

【问题讨论】:

请发布一个最小的工作示例 好吧,我总结了一下,只有一行出现复数错误。 【参考方案1】:

使用 COMPLEX 函数将左侧变量的初始赋值更改为复数值。

这正是你必须做的。

tfr= complex(zeros (N,tcol) ) ;  

您必须告诉编码器为复杂变量分配足够空间的变量。

【讨论】:

你能告诉我如何在第三行使用Real()函数,看看生成的matlab编译代码是否更简单?也许一种方法生成的代码不如另一种简洁? 你必须把它放在总和周围,但这只会忽略虚部。根据您的代码,我假设您正在处理虚值。【参考方案2】:

暂时解决了这个问题:

更改初始数组语句:

carr= zeros (N,tcol) ;  
tfr = complex(carr,0);

可能有更好的答案。

【讨论】:

以上是关于如何使用 Real();复杂的();在 Matlab 中定义复数的函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何:x86 中的 pow(real, real)

如何在 PDO 中使用/编写 mysql_real_escape_string? [复制]

智能优化算法——模拟退火法(Python&Matla实现)

matlab基本语法

如何使用 STM32 MCU 生成 REAL 随机数?

REAL基本问题