0

マトリックスにマージしたい 1D 配列が約 100 個あります。配列には 140 から 180 列があります。

これらの 1 x (140-180) 配列を 100 (配列の量) x 180 の次元の行列にマージすることは可能ですか?

すべての配列には数値が含まれています。補間によって 1x140 配列を 1x180 配列に拡張したいと考えています。

簡略化した形式では、次のようになります。

A = [1 5 7 8 3]
B = [1 3 5]

result= 

[1 5 7 8 3

1 2 3 4 5]

配列 B (1x3) は 1x5 行列に拡張されます。そして、その間の値は補間されます。

基本的に、すべての配列が同じ量の列で展開された後に「vertcat」を使用することを考えました。

前もってありがとう、コーエン

4

1 に答える 1

3

これはどう?

array = {[1 5 7 8 3],[1 3 5]}; % example data
N = 5; % desired length (180 in your case)

aux = cellfun(@(v) interp1(linspace(0,1,length(v)),v,linspace(0,1,N)), array, 'uni', false);
result = cat(1,aux{:});

線形補間を使用します。あなたの例では、これは

>> result

result =

     1     5     7     8     3
     1     2     3     4     5

一般に、線形補間は最初と最後を除くベクトルのすべての値を変更することに注意してください。たとえばN=5、ベクトル[1 3 4 5]は に補間され[1 2.5 3.5 4.25 5]ます。に追加の引数を渡すことで、他の形式の補間を使用できます。interp1を参照してくださいhelp interp1

于 2013-11-04T15:47:43.727 に答える