MATLABで、異なる周波数で測定されたデータの2つの行列を組み合わせて、結果がより高い周波数でインデックス付けされるようにするにはどうすればよいですか?より低い周波数で測定されたデータは結果に多くの未知の値を含むので、それらをマトリックスの最後の既知の値に置き換えたいと思います。データがたくさんあるので、ベクトル化されたソリューションが好まれます。以下にサンプルデータを追加しました。
与えられた:
index1 data1 index2 data2
1 2.1 2 30.5
2 3.3 6 32.0
3 3.5 9 35.0
4 3.9 13 35.5
5 4.5 17 34.5
6 5.0 20 37.0
7 5.2 ... ...
8 5.7
9 6.8
10 7.9
... ...
結果:
index1 data1 data2
1 2.1 NaN
2 3.3 30.5
3 3.5 30.5
4 3.9 30.5
5 4.5 30.5
6 5.0 32.0
7 5.2 32.0
8 5.7 32.0
9 6.8 35.0
10 7.9 35.0
... ... ...
編集: 次の投稿は私が必要としているものに近いと思いますが、私の問題に合うようにソリューションを変換する方法がわかりません。 http://www.mathworks.com/matlabcentral/newsreader/view_thread/260139
編集(数ヶ月後): 私は最近、この投稿にたどり着いた人に役立つと思うこの優れた小さな関数に出くわしました:
function yi = interpLast(x,y,xi)
%INTERPLAST Interpolates the input data to the last known value.
% Note the index data should be input in ASCENDING order.
inds = arrayfun(@findinds, xi);
yi = y(inds);
function ind = findinds(val)
ind = find(x<=val,1,'last');
if isempty(ind)
ind = 1;
end
end
end
クレジットはここにあります:http://www.mathworks.com/support/solutions/en/data/1-48KETY/index.html?product = SL&solution = 1-48KETY