1

Aよりも大きいベクトルの一部を に置き換えたいと思い0.5ますNaN。このベクトルの一部は、特定の時間枠の間で定義されx = ( t>=2 & t<5 )ます。tそしてA同じ長さです。

これまでのところ、私はこれを思いつきました:

A = [0.1 0.4 0.3 1 0.6 3 0.3 0.4 0.6 0.8 0.4 0.8 0.9 0.2 1];
t = [1 1 1 1 1 1 1 2 2 2 3 3 3 4 5];
x = (t >= 2 & t < 5);

if A(x) > 0.5
    A = nan;
end

しかし、うまくいきません!いろいろやってみましたがだめでした。

4

2 に答える 2

2

一歩一歩やってみましょう。


最初のステップ - 条件の構築

もしあなたがそうするなら:

A > 0.5

長さ のベクトルが得Aられ1、要素の位置Aは よりも大きくなります0.5。つまり、次のようになります。

Columns 1 through 14

0     0     0     1     1     1     0     0     1     1     0     1     1     0

Column 15

1

もしあなたがそうするなら:

t >= 2 & t < 5

上記と同様のベクトル(同じ長さ)が得られますが、今回1は特定の位置で、ベクトルの特定の要素がt間隔[ 2, 5 > . ベクトルは次のようになります。

Columns 1 through 14

0     0     0     0     0     0     0     1     1     1     1     1     1     1

Column 15

0

両方の条件が満たされることを要求することで、これら 2 つのベクトルを組み合わせることができます。

(A > 0.5) & (t >= 2) & (t < 5)

ベクトルを取得します。

Columns 1 through 14

0     0     0     0     0     0     0     0     1     1     0     1     1     0

Column 15

0

前の 2 つのベクトルの両方に1 がある位置に 1 があることに注意してください!


2 番目のステップ - ベクトルから要素を抽出する

これを行う場合:

A( logical([1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]) )

vector から最初の要素のみが抽出されA、次のようになります。

0.1000

最初の 2 つの要素を次のように抽出します。

A( logical([1 1 0 0 0 0 0 0 0 0 0 0 0 0 0]) )

等々。

vector の一部の要素の値を変更したい場合はA、最初と最後の要素を valueに変更すると、次の3ように実行できます。

A( logical([1 0 0 0 0 0 0 0 0 0 0 0 0 0 1]) ) = 3;

まとめ (または TLDR)

から目的の要素を抽出し、次Aの値を割り当てますNaN

A( (A > 0.5) & (t >= 2) & (t < 5) ) = NaN;
于 2013-01-27T01:15:12.180 に答える
0

与えられた:

A=[0.1 0.4 0.3 1 0.6 3 0.3 0.4 0.6 0.8 0.4 0.8 0.9 0.2 1];
t = [1 1 1 1 1 1 1 2 2 2 3 3 3 4 5];
x=(t>=2 & t<5);

次の操作を簡単に実行できます。

A (A > 0.5) = NaN;

GNU Octave では、次の出力が得られます。

octave:6> disp(A)
0.10000   0.40000   0.30000   1.00000   0.60000   3.00000   0.30000   0.40000   0.60000   0.80000   0.40000   0.80000   0.90000   0.20000   1.00000
于 2013-01-26T23:34:50.440 に答える