質問編集履歴

2

すみません。インデントは表記ミスです。私もこの文章で実行を行うことができました。下の文は関係ないと思い省略したことが問題だったみたいです。この文ではやはり同様のエラーが発生し実行できないです。

2019/10/26 14:46

投稿

itsukidesu
itsukidesu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
  d, d_min = 1.0, c/(2*F_w*(N/N_freq)) #対象物までの距離, 最小測定可能距離
70
70
 
71
- x = [0.0, 0.006] #マイクロホンの```ここに言語を入力
71
+ x = [0.0, 0.006] #マイクロホンの位置
72
72
 
73
73
 
74
74
 
@@ -104,13 +104,19 @@
104
104
 
105
105
 
106
106
 
107
+ def Rand(i): #乱数の生成
108
+
107
- """channel 1"""
109
+ return (random.uniform(0,1)-0.5)*2 #-1〜1までの乱数
110
+
111
+
112
+
113
+ #channel 1
108
114
 
109
115
  vt, vr, vc = [], [], [] #波の成分を格納するリストの作成
110
116
 
111
117
  for i in range(N):
112
118
 
113
- transmit, reflect = Wave(x[1], i) #波の作成関数に値を渡す
119
+ transmit, reflect = Wave(x[0], i) #波の作成関数に値を渡す
114
120
 
115
121
  vt.append(transmit) #送信波の格納
116
122
 
@@ -120,19 +126,57 @@
120
126
 
121
127
 
122
128
 
123
- """channel 2"""
129
+ gaus = [] #ガウス乱数を入れるための配列
124
-
130
+
125
- vt2, vr2, vc2 = [], [], []
131
+ for i in range (512):
132
+
133
+ gaus.append(Rand(i)*math.exp(-i*0.1))
134
+
135
+
136
+
137
+ wave = [] #測定系のノイズを入れるための配列
138
+
139
+ for i in range (N):
140
+
141
+ figure = 0
142
+
143
+ for j in range (512):
144
+
145
+ if (i-j) >=0:
146
+
147
+ figure += gaus[j]*vc[i-j] #合成波にガウス乱数を畳み込む
148
+
149
+ wave.append(figure)
150
+
151
+
152
+
153
+ f = np.fft.fft(wave) #vcを高速フーリエ変化行いfに格
154
+
155
+
156
+
157
+ f2 = [] #データの抽出を行う
126
158
 
127
159
  for i in range(N):
128
160
 
161
+ if F/N*i>=F_min and F/N*i<=F_max: #周波数帯域でデータを抽出
162
+
163
+ f2.append(f[i])
164
+
165
+
166
+
167
+ #channel 2
168
+
169
+ vt2, vr2, vc2 = [], [], [] #波の成分を格納するリストの作成
170
+
171
+ for i in range(N):
172
+
129
- transmits, reflects = Wave(x[1], i) #ここでエラーが出ま
173
+ transmits, reflects = Wave(x[1], i) #波の作成関数に値を渡
130
-
174
+
131
- vt2.append(transmits)
175
+ vt2.append(transmits) #送信波の格納
132
-
176
+
133
- vr2.append(reflects)
177
+ vr2.append(reflects) #反射波の格納
134
-
178
+
135
- vc2.append(transmits + reflects)
179
+ vc2.append(transmits + reflects) #合成波の生成
136
180
 
137
181
 
138
182
 

1

コードを見やすくなるよう修正を行いました。

2019/10/26 14:46

投稿

itsukidesu
itsukidesu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  (例)現在、pythonを用いてクロススペクトル法に関するプログラムを書いていいるのですが、関数を定義してリストにreturnで追加を行いたいのですが二回同じ関数に変数を入れると2回目の呼び出し時の計算でエラーが発生します。これまでC言語でプログラムを書いてきて、今回pythonの学習のため書き換えているためpythonに関する知識はそれ程ありませんが、調べても一向に解決出来そうにないため質問させて頂きました。
8
8
 
9
- ■■な機能を実装中に以下のエラーメッセージが発生しました。
9
+ 関数定義呼び出すプログラムを実装中に以下のエラーメッセージが発生しました。
10
10
 
11
11
 
12
12
 
@@ -68,7 +68,7 @@
68
68
 
69
69
  d, d_min = 1.0, c/(2*F_w*(N/N_freq)) #対象物までの距離, 最小測定可能距離
70
70
 
71
- x = [0.0, 0.006] #マイクロホンの位置
71
+ x = [0.0, 0.006] #マイクロホンの```ここに言語を入力
72
72
 
73
73
 
74
74
 
@@ -136,6 +136,10 @@
136
136
 
137
137
 
138
138
 
139
+ ```位置
140
+
141
+
142
+
139
143
  ### 試したこと
140
144
 
141
145