1

次の問題があります。DEM ファイルから取得した一連の地形の高さを含むサイズ X、Y の 2 次元マトリックスと、それぞれ 0 ~ 5000 メートルの Z 高さ値を持つサイズ X、Y、Z の 3 次元マトリックスの 2 つのマトリックスがあります (X、Y ) 点。

各 (X,Y) ポイントの DEM の高さと Z の高さの値の列を比較し、最も近いものを取得します。例えば:

dem(1,1) = 1850 %actual height of the terrain at point (1,1)
heights(1,1,:) = 0, 1000, 2000, 3000, 4000, 5000 %column of heights at point (1,1)

関数「find」を使用すると、次のエラーが発生します。

find(heights > dem, 1)
Error using  > 
Number of array dimensions must match for binary array op.

2 つの for ループを必要としない解決策はありますか?

よろしくお願いいたします。

4

2 に答える 2

2

次を使用して、これを単一次元のループに減らすことができますbsxfun

heights = rand(10, 10, 10);
dem = rand(5, 1);
bsxfun(@gt, heights(1, :, :), dem)

    [returns a 5x10x10 matrix]
于 2013-04-04T11:00:37.927 に答える
0

データを次のように定義するだけです。

dem(1,1) = 1850;
heights(1,1,:) = [0; 1000; 2000; 3000; 4000; 5000];

さて、find(heights > dem, 1)収量

ans =

     3

これは期待される結果、 のインデックスです2000

于 2013-04-04T10:34:21.083 に答える