1

私は2Dグリッド(G = 250x250)を持っていますが、これの約100ポイントが既知で、残りは不明(NaN)です。このマトリックスのサイズを変更したいと思います。私の問題はimresize、MATLABでそれを実行できないことです。これは、既知の値を削除し、NaN行列を提供するだけだからです。

誰かが私のためにそれを行うことができる方法を知っていますか?内挿法(逆距離加重を使用するなど)を使用することをお勧めしますが、それが機能するかどうか、またはより良い方法があるかどうかさえわかりません。

    G = NaN(250,250);
    a = ceil(rand(1,50)*250*250);
    b = ceil(rand(1,50)*250*250);
    G (a) = 1; G (b) = 0;
4

1 に答える 1

2

これはどう:

% find the non-NaN entries in G
idx = ~isnan(G);

% find their corresponding row/column indices
[i,j] = find(idx);

% resize your matrix as desired, i.e. scale the row/column indices
i = ceil(i*100/250);
j = ceil(j*100/250);

% write the old non-NaN entries to Gnew using accumarray
% you have to set the correct size of Gnew explicitly
% maximum value is chosen if many entries share the same scaled i/j indices
% NaNs are used as the fill
Gnew = accumarray([i, j], G(idx), [100 100], @max, NaN);

maxが適切でない場合は、accumarrayに別の累積関数を選択することもできます。また、必要なものでない場合は、塗りつぶしの値をNaNから別の値に変更できます。

于 2012-09-27T20:16:28.183 に答える