如何将Matlab含逐元素乘法与幂运算的代码转换为R代码?
Matlab转R:逐元素乘法与幂运算实现
需求说明
需要将以下Matlab代码转换为R代码:
z=(exp(j)).^(pw.*om)
其中Matlab的.*是逐元素乘法,.^是逐元素幂运算,需对应实现R中的等价逻辑。
数据定义(Matlab转R)
先把原Matlab的数据定义转换成R代码:
rt <- 10000 f <- 200 om <- 2 * pi * f / rt t <- seq(0, 1, length.out = rt) pw <- 1:length(t)
错误尝试分析
你的几次尝试都误用了c()函数(该函数用于拼接向量),完全偏离了原代码的运算逻辑——原代码是将exp(j)作为底数,对pw.*om的逐元素结果做幂运算,而非拼接两个向量。
正确R代码实现
# 虚数单位用1i更简洁,等价于sqrt(as.complex(-1)) z <- exp(1i) ^ (pw * om)
关键运算对应说明
- Matlab的逐元素乘法
.*:R中直接用*即可,R里*默认就是逐元素运算(矩阵乘法用%*%)。 - Matlab的逐元素幂运算
.^:R中用^或**,两者均为逐元素幂运算,效果一致。 - Matlab的
j(虚数单位):R中直接用1i表示,更简洁高效。
内容的提问来源于stack exchange,提问作者user22178063
相关产品推荐
相关产品推荐

