私がやっているのは、正規分布振幅と周波数を持つ正弦波を作成することです。例えば5V、2〜10Hz。だから私の試みは、与えられた振幅と周波数で私の機能を取得し、それを最初の転換点まで実行することです。そこから、次の関数を計算し、前の関数の点のy値を(シフトとして)追加して、その点から開始します。私の問題は、カーブではなく直線を得る関数の変更の一部です。誰かが私がどこに間違っているのか教えてもらえれば分かります。注記すると、各値をプロットするために8ms刻みを使用します。Python正弦波のホワイトノイズ
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats
import serial
newlist = np.zeros(1)
timesnew = np.zeros(1)
volts = []
def main(amp, lowerFreq, upperFreq, time, incr):
#Creates graph and saves it in newlist and timesnew
amt = np.int(time/incr)
list = []
timels = [] # np.zeros(amt+amt)
curtime = 0
loweramp = -amp
mu, sigma = 0, 1
ybefore = 0
rand = stats.truncnorm((loweramp - mu)/sigma, (amp - mu)/sigma, loc=mu, scale=sigma)
freqr = stats.truncnorm((lowerFreq - mu)/sigma, (upperFreq - mu)/sigma, loc=mu, scale=sigma)
i = 0
while i < amt:
# get amp
thisAmp = rand.rvs()
angleFreq = 2 * np.pi * freqr.rvs()
xtp = np.arccos(0)/angleFreq #x value of turning point
yval = thisAmp * np.sin(angleFreq * xtp)
# check that yvalue(voltage) is okay to be used - is within +-amp range
while not loweramp <= yval + ybefore <= amp:
thisAmp = rand.rvs()
angleFreq = 2 * np.pi * freqr.rvs()
xtp = np.arccos(0)/angleFreq
yval = thisAmp * np.sin(angleFreq * xtp)
# now add values to list
t = 0
while t <= xtp:
ynow = thisAmp * np.sin(angleFreq * t) + ybefore
# print ynow
list.append(ynow)
curtime += incr
timels.append(curtime)
t += incr
i += 1
print i
ybefore = ynow
newlist = np.asarray(list)
timesnew = np.asarray(timels)
#a = np.column_stack((timesnew, newlist))
np.savetxt("C://foo.csv", a, delimiter=";", fmt='%.10f')
addvolts()
plt.plot(timels,list)
plt.show()
if __name__ == "__main__":
main(5, 1, 2, 25, 0.00008)
EDIT:基本的にここ がターニングポイントの後に機能がsinusodialではないようです、問題となっている(ラインが直線的であると思われる)、私は関数を取得する方法を少なくとも理由を理解たりすることはできません転換点でより「曲がりくねった」でなく「鋭い」ではなくなる。
私は多分、機能の変更は、前の関数からあまりにも異なることはないはずですが、その後、私はランダム性を失うことになると思っています。私はそれが "より良く見えるようにしたいが、私は順番に周波数を実行しない限り、それを達成する方法がわからない。私が適用した仕事の一部として私に与えられた「ホワイトテイズファイル」をエミュレートしようとしています。ホワイトニングはデジタル/アナログコンバータに送られ、機器のテストに使用されます。明らかに、私は知識の目的のために私がこれを完了したいという立場を得られなかった。鉱山の間に与えられたの違いを見ることができる最後のpicから
は、私は与えられたホワイトノイズファイルのグラフです。私は、1つの転換点ではなく、全期間にわたって各機能を実行しようとしていると思います。
あなたの質問には十分な問題の説明がありません。未定義の行を削除すると、コードは正常に実行され、プロットが生成されます。私は直線を見ません。したがって、この問題は再現性がありません。あなたは、問題を再現するコードと、人々が理解する機会がある問題の記述を提供できますか? – ImportanceOfBeingErnest
定義上のホワイトノイズは完全に不規則です。正弦波の変形を見つけることは意味をなさない。おそらく、それはあなたが構成したいピンクノイズです、白いノイズは、周波数帯域にフィルタリング? – LutzL
@ImportanceOfBeingErnest私は、私の問題を説明するのに役立つ証拠とさらなる情報を提供しました。 – tauhtauhsauce