コードの背後にある考え方を簡単に説明してから、問題を掘り下げます。
データを収集しています。最初の 2 つの列は経度と緯度の座標になり、3 番目の列は GPS 信号強度になります。
それぞれが異なる衛星に対応する 2 つの行列があります。最初の行列の x,y 座標を使用して、2 番目の行列の TriScatteredInterp 関数を使用して信号強度を補間しました (逆も同様です)。アイデアは、さまざまな場所の推定信号強度を作成し、ある種の超ドローネ三角形分割を取得することです。
私はこれまでのところすべてをやり遂げることができました。(この時点で私と一緒にいてくれてありがとう)。
私が今やりたいことは、2 つの行列 (補間されたデータで構成される) を 1 つの行列に結合することです。long 座標と lat 座標が同じ場合、つまり、列 1 と 2 の最初の 2 つの値が他のマトリックスと同じである場合、信号強度を行の 4 列目に追加したいと思います。緯度と経度の値が異なる場合、新しいマトリックスに新しい行を作成してデータを追加したいと考えています。質問を編集し、質問の最後に希望の回答を添付しました。(-明確にするためにこのセクションを編集)
私は完全に困惑しており、あなたが与えることができるどんな助けにも感謝します. 有益な情報を求めてかなり広範囲に検索しましたが、運が悪かったです。
いくつかの問題があり、これが最も複雑であるため、すべての問題を投稿するかどうかはわかりませんでした. 1つだけ投稿することにしました。誰かがさらに質問する際のエチケットを教えていただければ幸いです。私はここに新しいです。
私の長文の質問を読んでいただきありがとうございます。これ以上簡潔にできなかったことをお詫びします。
あなたが与えることができるどんな助けにも感謝します. サム
x = [1, 3, 5, 2, 4, 5, 3, 1, 2, 3, 4, 5; %I wanteed to make an array that kind of made sense
1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 3, 4; %Using random values became kind of difficult
20, 40, 10, 50, 80, 60, 80, 40, 50, 50, 70, 20]';
y = [0, 2, 4, 1, 2.5, 4, 2, 0, 1, 2, 3, 4;
2, 2, 2, 3, 4, 4, 4, 4, 5, 5, 4, 5;
10, 30, 20, 40, 70, 80, 90, 30, 60, 40, 80, 20]';
dt1 = DelaunayTri(x(:,1), x(:,2)); %This makes the dt for the x array
dt2 = DelaunayTri(y(:,1), y(:,2));
interp1 = TriScatteredInterp(x(:,1), x(:,2), x(:,3)); %I can use the dt to do this as below
interp2 = TriScatteredInterp(dt2, y(:,3)); %use the dt array here like so
newValuesforY = interp1(y(:,1), y(:,2)); %This line uses the interpretation function of the DT for x, to predict values at the y co-ords that I enter.
yNew = [y newSSforY];
newSSforX = interp2(x(:,1), x(:,2));
xNew = [x newSSforX];
xNew(:,[3,4])=xNew(:,[4,3]); %I swap these around for clarity
%I now wish to merge the two, as mentioned in the above post.
私が求めている答えを追加しました:
0 2 10 NaN
0 4 30 NaN
1 1 NaN 20
1 3 40 40
1 5 60 NaN
2 2 30 50
2 4 90 50
2 5 40 NaN
2.5 4 70 57.5
3 1 NaN 40
3 3 52.5 80
3 4 80 65
3 5 30 50
4 2 20 80
4 3 50 70
4 4 80 46.66666667
4 5 20 NaN
5 1 NaN 10
5 3 NaN 60
5 4 NaN 20
このことから、緯度と経度が同じ重複データを破棄し、newSSforY と newSSforX の 2 つの配列を 1 つの配列にマージしました。