如何使用 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 中定义复数的函数?的主要内容,如果未能解决你的问题,请参考以下文章