0

いくつかの連続データのエッジとレベルを表す 2 つのベクトルがあります (これは現在シミュレートされています)。

edges = [50, 120, 170, 200, 220, 224, 250]
levels = [24,3,30,0,36,0]

最初の 50 エントリに対して 24、後続の 120 エントリに対して 3 などのベクトルを作成するにはどうすればよいですか?

私はもう試した

psd = zeros(1,250)
psd(edges) = levels

しかし、これは関連する位置に単一の値を配置するだけです-それは私が望むものではありません.

4

5 に答える 5

1

edges本当にあなたの間隔の端である場合、ここに小さな解決策があります:

levels0 を最初の要素としてベクトルを展開します。

levels = [0, 24, 3, 30, 0, 36, 0];

次に、次のことができます。

psd = zeros(1,250);
psd(edges(2:end)-1) = diff(levels);
psd = cumsum(psd);

2 つの連続する値の間のオフセットを制限する間隔で配置し、他の場所では 0 にします。要約すると、あなたはあなたが期待するものを持っています。

于 2013-08-19T16:34:27.707 に答える
0

Bentoy13で示されたアプローチを実装するこのランレングス デコード ユーティリティFEXrude()を使用できます。

% example inputs
edges  = [2, 3, 1];
levels = [24,3,30];

結果

rude(edges, levels)
ans =
    24    24     3     3     3    30
于 2013-08-19T17:19:50.133 に答える