我这里有一些问题。请看一下我的代码,我不知道代码有什么问题。这很简单,但结果让我感到困惑。我附上了下面的代码。
import numpy as np
import matplotlib.pyplot as plt
def S(xc):
N=len(xc)
r=0.0
s=0.0
# calculation quartile
for m in range(0,N-1):
for n in range(m+1,N):
if (xc[m] > xc[n]):
q=xc[m]
xc[m]=xc[n]
xc[n]=q
if (N % 4 < 2):
q=(xc[N-N/4-1] + xc[N-N/4])*0.5-(xc[N/4-1]+xc[N/4])*0.5
else:
q=xc[N-N/4-1]-xc[N/4]
#calculation standard deviation
for m in range(0,N):
r+=xc[m]
s+=xc[m]*xc[m]
r=np.sqrt(s/N-(r/N)*(r/N))
#calculation
if (q<r):
s=q
else:
s=r
hasil=0.9*(s/1.34)*pow(N,-0.2)
return hasil
fc=0.3
fm=0.02
mu=1
Nsim=10
bb=[]
for nn in range(0,Nsim):
bb.append((1+(mu*np.cos(2*np.pi*fm*nn)))*np.cos(2*np.pi*fc*nn))
print bb
print S(bb)
print bb
当我在主函数中删除“S”函数时,代码可以工作,但是,在“S”函数之后,即使我只是打印相同的变量,变量“bb”上的数据也不同。我不明白发生了什么。
感谢您的帮助。非常感谢
阿尔文
调用S(bb)
会通过xc[m]=xc[n]
等语句更改bb
的内容。
我是一名优秀的程序员,十分优秀!