0

以下のコードでは、O3ppm 単位で 0.001 刻みで 0 から 0.25 までの各値のすべての IF 結果の出力ベクトルを取得しようとしています。

現在、BPlo=0.065 の 1 つの出力、2 番目の IF 出力しか得られませんでした。

が見たいです; BPlo=[n, n1, n2....nx] それが理にかなっている場合。

どんな助けでも大歓迎です。

コードのこのセクションは、大気質の監視を検討する優等年度プロジェクトのより大きなスクリプトの一部です。

グレアム。

O3ppm=[0:0.001:0.25];

for O3ppm=[]    
    if O3ppm < 0.065 
       BPlo = 0 
    elseif (O3ppm >= 0.065)&&(O3ppm < 0.085)
            BPlo = 0.065
            elseif (O3ppm >= 0.085)&&(O3ppm < 0.105)
                    BPlo = 0.085
                    elseif (O3ppm >= 0.105)&&(O3ppm < 0.125)
                            BPlo = 0.105
                            elseif (O3ppm >= 0.125)
                                    BPlo = 0.125
    end
end
BPlo
4

2 に答える 2

2

スカラーに等しく設定するだけBPloなので、ベクトルにはなりません。

すでにすべての条件を記述しているため、ループBPloの前に次のように初期化しますfor

BPlo=zeros(size(O3ppm));

を次のように置き換えfor O3ppm=[]ます

for i=1:length(03ppm)

次に、 のインスタンスを に置き換え、 のインスタンスをBPlo=に置き換えBPlo(i)=ます。O3ppmO3ppm(i)

一連の 's を使用するのではなく、すべての条件を実行するよりクリーンな方法があると確信していelseifますが、コードが十分に速く実行される場合は問題ありません。

于 2013-11-06T11:11:11.347 に答える
0

コードの最初の行で、O3ppm251 個の値のベクトルを設定します。

O3ppm=[0:0.001:0.25];

そして次の行で、それを空のベクトルに設定します

for O3ppm=[]

私はあなたのコードの残りの部分を調べていません。最初にこの最初の問題を修正する必要があると思います。修正がどうあるべきかは完全には明らかではありません。

于 2013-11-06T11:11:04.667 に答える