You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中传入函数的信号莫名出现噪声问题排查

问题分析与解答

问题描述

通过代码 t,X = genS(f,T,L) 生成无噪声干净信号X,绘图确认信号纯净。将X传入函数 bopS(X,R,T,I,fs) 后,未对X执行其他操作,但再次绘图发现X出现噪声。查看bopS函数代码(如下),并未显式修改X,请问原因是什么?

def bopS(s,R,T,I,fs):
    s2 = s
    s1 = s2 + np.random.normal(0,0.1*max(s2),len(s2))
    d = (R+T)/(I*fs)
    s1 = np.roll(s1,d)

    return s1,d

核心原因

大概率是你在调用bopS时,误将函数返回的带噪声信号重新赋值给了变量X,比如写了这样的代码:

X, d = bopS(X, R, T, I, fs)

细节解释

函数bopS内部不会修改传入的原始X:

  • s2 = s只是创建了一个指向同一numpy数组的引用,但后续的s2 + np.random.normal(...)操作会生成一个新的numpy数组(numpy的算术运算符默认返回新数组,不会修改原数组);
  • np.roll(s1,d)同样返回一个新数组,不会改动原始的s(即传入的X);
  • 函数最终返回的是新生成的带噪声数组s1,而非修改后的原参数。

如果你的调用代码没有将返回值赋值给X,原始X绝对不会被改变。请检查调用bopS的代码行,确认是否存在覆盖X的操作。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:01:36