2016-03-31 6 views
0

多次元配列のすべての特定のインデックスペアを選択しようとしています。すなわち、一対のインデックス(例えば、[1,2]および[4,5])のセットを有する。すべてを選択してください多次元配列の特定のインデックスペアMatlab

A(setdiff(1:length(A(:,1)),lon),setdiff(1:length(A(1,:)),lat)) = 0; 
Aが行列と経度と緯度は、私は維持したいインデックスのペアですさ

、:私はこれに来ている最も近いです0

にすべてが、これらのインデックス付きペアを設定したいです。しかし、それはそれらのペアの交差する行と列もすべて残します。

アイデア?ここで

は、いくつかのサンプルコードです:

A = ones([5,5]) 
A = 

    1  1  1  1  1 
    1  1  1  1  1 
    1  1  1  1  1 
    1  1  1  1  1 
    1  1  1  1  1 

lon = [1]; 

lat = [4]; 

A(setdiff(1:length(A(:,1)),lon),setdiff(1:length(A(1,:)),lat)) = 0 

A = 

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

私が欲しいものです:

A =

 0  0  0  1  0 
    0  0  0  0  0 
    0  0  0  0  0 
    0  0  0  0  0 
    0  0  0  0  0 
+1

を用いて線形インデックスにそれらを変換したいと思うでしょう、あなたは、例えば、データの短いビットを提供することはできますか? – Suever

+0

最後の作品はあなたが*求めている*または現在入手しているものですか? – Suever

+0

申し訳ありません、いいえ、私は1つのインデックスのペアだけでなく、交差している行と列全体が必要です。あなたはすでに私の質問に答えても、私はそれを明確にするように更新します。 –

答えて

0

一番簡単な方法は、実際にあなたがしようとしているものの反対です。まず、0の行列から始め、latlonに保存したペアのみを入力します。また、あなたは添字をペアリングしているので、あなたがsub2ind

%// Convert subscripts to a linear index 
inds = sub2ind(size(A), lon, lat); 

%// Start off with a matrix of zeros 
B = zeros(size(A)); 

%// Fill in the values at the specified lat/lon from A 
B(inds) = A(inds); 
+0

はい!それは完璧に働いた!本当にありがとう! –

関連する問題