0

Python でベル​​ヌーイ解決プロセスをシミュレートしようとしています。私はそれのMatlabの例を持っています。専門用語に関係なく、いくつかの確率変数に応じて 0 と 1 の列ベクトルを生成します。

num_trials = 1
b_energy_res = zeros(num_photon,num_trials);
for idx = 1:num_trials
    energy_trial = randn(1,1)*energy_sigma+3*energy_sigma;
    b_energy_res(:,idx) = rand(num_photons,1)>energy_trial;
end;

t = t+(1-b_energy_res)*1e9;
t = t/1e-12;

0 と 1 を含むベクトルを出力します。

Python で同じことをしようとしましたが、エラーが発生します。また、numpy の配列が 1 と 0 の値の頻度がほぼ同じになるようにしようとしています。両方をチェックするためにヒストグラムを実行できます。属性エラーが発生します:

b_energy_res = np.zeros(num_photon)    
energy_trial = np.random.standard_normal() * energy_sigma + 3 * energy_sigma
r = np.random.uniform(0.0,1.0,num_photon)

for i in xrange(int(num_photon)):
    if r[i] > energy_trial[i]:
        b_energy_res[i] = 1

t = t + (1-b_energy_res)*1e9
t = t*1e12

エラー: 'float' には属性getitemがありません

また、これは私が望むものを生み出していますか?

4

1 に答える 1

2

energy_trialは単一の値であるため、 でインデックスを作成することはできませんenergy_trial[i]。その行は次のようになります。

if r[i] > energy_trial:

これが正しい出力を生成するかどうかについては、Python と Matlab の経験が少しある私に言えることは、見た目が正しいということだけです。num_photon完全に再現可能な例 (例をテストするためにenergy_sigma自分自身のようなものを定義する必要がありました) を使用して新しい質問をすると、予想される出力を使用して、さらに助けを得ることができる場合があります。

于 2013-08-22T00:42:08.040 に答える