3

寄稿者が解決するのを手伝ってくれることを願っています。実際の例を提供するのが最善だと思います:

2 つのセルがあり、どちらも同じ数の行列で構成されています (一連のデータ ファイルを読み取った後にいくつかのループ計算を行った結果)。各行列は、10 進数の年日の列であり、その後に一連のデータ列が続きます。ダミーデータは次のとおりです。

A = [ 186.356 1 2 3 4;186.364 2 3 4 5;186.372 3 4 5 6]
B = [ 187.356 1 2 3 4;187.364 2 3 4 5;187.372 3 4 5 6]
C = [ 188.356 1 2 3 4;188.364 2 3 4 5;188.372 3 4 5 6]
x = {A,B,C}
D = [ 186.3568 1 2 3 4; 186.3576 2 3 4 5; 186.3584 3 4 5 6; 186.3592 4 5 6 7; 186.36 5 6 7 8; 186.3608 6 7 8 9; 186.3616 7 8 9 10; 186.3624 8 9 10 11; 186.3632 9 10 11 12; 186.364 10 11 12 13; 186.3648 11 12 13 14; 186.3656 12 13 14 15]
E = [ 187.3568 1 2 3 4; 187.3576 2 3 4 5; 187.3584 3 4 5 6; 187.3592 4 5 6 7; 187.36 5 6 7 8; 187.3608 6 7 8 9; 187.3616 7 8 9 10; 187.3624 8 9 10 11; 187.3632 9 10 11 12; 187.364 10 11 12 13; 187.3648 11 12 13 14; 187.3656 12 13 14 15]
F = [ 188.3568 1 2 3 4; 188.3576 2 3 4 5; 188.3584 3 4 5 6; 188.3592 4 5 6 7; 188.36 5 6 7 8; 188.3608 6 7 8 9; 188.3616 7 8 9 10; 188.3624 8 9 10 11; 188.3632 9 10 11 12; 188.364 10 11 12 13; 188.3648 11 12 13 14; 188.3656 12 13 14 15]
y = {D,E,F}

私の意図は、x と y の両方に含まれるデータ列を合計することです。ただし、y のデータの解像度は x よりもはるかに高いことがわかります。そのため、まず x のタイムステップに基づいて y のデータを平均化したいと思います。

例として、x と y の間で一致する最初の期間は、マトリックス A の行 1 に対応しますが、マトリックス D の最初の 10 行のみに対応します。A の最初の行の合計は 10 です。

sumA = sum(A(1,2:end),2)

D の最初の 10 行の平均は

sumD = sum(mean(D(1:10,2:end)),2)

その結果、合計 38 になりました。

これは簡単な例です。2 つの大きなセルに多数のデータ行があります。セルからデータを抽出し、最初の 2 つのセル x と y と同じ次元の別のセルに書き換えながらデータをループする必要があると思われますが、どこから始めればよいか途方に暮れています。どんな助けでも素晴らしいでしょう。

編集

私の問題を明確にするために、元の質問で間違いを犯したことに気付きました。これが混乱の原因であることは間違いありません。

上記はすべて正しいですが、D の最初の 10 行の合計:

sumD = sum(mean(D(1:10,2:end)),2)
sumD =

28

実際には、A の 2 行目の合計に追加する必要があります。

sumA = sum(A(2,2:end),2)
sumA =

14

これは、行列 D の列 1 の行 1 ~ 10 のすべての値が、行列 A の行 1 と列 1 の値よりも大きく、行列 A の行 2 と列 2 よりも小さいか等しいためです。行列 D のダミー データを増やすと簡単になります。

D = [ 186.3568 1 2 3 4; 186.3576 2 3 4 5; 186.3584 3 4 5 6; 186.3592 4 5 6 7; 186.36 5 6 7 8; 186.3608 6 7 8 9; 186.3616 7 8 9 10; 186.3624 8 9 10 11; 186.3632 9 10 11 12; 186.364 10 11 12 13; 186.3648 11 12 13 14; 186.3656 12 13 14 15; 186.3664 13 14 15 16; 186.3672 14 15 16 17; 186.368 15 16 17 18; 186.3688 16 17 18 19; 186.3696 17 18 19 20; 186.3704 18 19 20 21; 186.3712 19 20 21 22; 186.372 20 21 22 23]

これで、結果は 2 つの値のベクトルになります。最初の値は 28+14 で、A の 2 番目の行の合計 (または sumA) と、行列 D の最初の 10 行のデータの平均の合計 (または sumD) の結果です。2 番目の値は、A の 3 番目の行の合計になります。sumA2 としましょう。

sumA2 = sum(A(3,2:end),2)
sumA2 =

18

および sumD2:

sumD2 = sum(mean(D(11:end,2:end)),2)
sumD2 =

68
sumA2+sumD2

ans =

86

このプロセスを自動化して、セル内の各マトリックスを処理できるようにしたいと考えています。つまり、薄暗いセル x と y から始める場合:

x = 

[300x5 double]    [300x5 double]    [300x5 double]
y = 

[2000x5 double]    [2000x5 double]    [2000x5 double]

私は結果が欲しい

z = 

[300x1 double]    [300x1 double]    [300x1 double]

それが物事をより明確にするかどうかはわかりませんが、見てみましょう!

4

1 に答える 1