2

多くの X、Y 空間情報を使用するアプリケーションに取り組んでいます。

1 つは X 値を表し、もう 1 つは Y 値を表す 2 つの並列配列がある場合、両方の配列からサブセットを選択する方法はありますか? サブセットは、x 値配列の開始値と終了値を使用して決定されます。

2 つの並列配列の例を次に示します。

double[] xs = new double[] { 
    0.0, 0.04, 0.08, 0.12, 0.16,
    0.2, 0.24, 0.28, 0.32, 0.36,
    0.4, 0.44, 0.48, 0.52, 0.56,
    0.6, 0.64, 0.68, 0.72, 0.76,
    0.8, 0.84, 0.88, 0.92
};
double[] ys = new double[] {
    0.0152, 0.1434, 0.1647, 0.3800,
    0.7880, 0.0488, 1.0060, 0.2710,
    0.0363, 0.4321, 0.5573, 0.2192,
    0.6341, 0.5181, 0.9546, 0.8275,
    0.5567, 0.9870, 0.8895, 0.3423,
    0.6061, 0.1507, 0.7841, 0.6512
};

x 値と y 値の両方のサブセットが必要で、x が 0.1 以上 0.2 以下であるとします。このようなサブセットの結果は、2 つの並列配列になるはずです。

double[] x_subset = new double[] {
    0.12, 0.16, 0.2
};
double[] y_subset = new double[] {
    0.3800, 0.7880, 0.0488
};

x 配列と y 配列は、常に同じ数の要素を持ちます。

Zip を使用してみましたが、うまくいきません。単純な古いループを使用する以外に、他に何も考えられません。ただし、LINQは初めてです。

4

2 に答える 2

0

LINQ クエリを使用して、一致する要素を選択できます。

x_subset = xs.Where(x => x >= .1 && x <= .2).ToArray();
y_subset = ys.Where(y => y >= .1 && y <= .2).ToArray();

( ) を使用しFunc<double, bool> f = (a) => a >= .1 && a <= .2)て、それを引数として .Where に渡すこともできます)

于 2012-07-12T21:03:36.637 に答える