1

マトリックスがあるとしましょう6x5(実際のデータはもっと大きいです)

ABCDE

1 5 7 2 3

2 1 9 8 5

3 1 2 3 1

4 1 3 4 2

5 2 9 0 1

6 5 3 4 3

X 軸に A、Y 軸に B、C、D をプロットする必要があります。(隣接するデータ ポイントの各ペアを平均することによって) データ ポイントを半分に減らしたい場合は、どうすればよいですか? n5 (または) ポイントごとに平均して、さらにポイントを減らしたい場合はどうすればよいですか?

MATLAB ヘルプ ドキュメントを見ましたが、まだ混乱しています

私は必要なものを手に入れました。入力してくれた人たちに感謝します。本当に役に立ちました

4

3 に答える 3

4

どうぞ:

M = [1 5 7 2 3
     2 1 9 8 5
     3 1 2 3 1
     4 1 3 4 2
     5 2 9 0 1
     6 5 3 4 3]; % data

>>result = (M(1:2:end-1,:) + M(2:2:end,:))/2;

result =

1.5000    3.0000    8.0000    5.0000    4.0000
3.5000    1.0000    2.5000    3.5000    1.5000
5.5000    3.5000    6.0000    2.0000    2.0000
于 2013-10-23T22:39:00.697 に答える
3

偶数行のシナリオは簡単で、次のように使用meanして作業を行います。

>> M = magic(4)
 M =
     16     2     3    13
      5    11    10     8
      9     7     6    12
      4    14    15     1
>> reshape(mean(reshape(M,2,[]),1),[],size(M,2))
ans =
   10.5000    6.5000    6.5000   10.5000
    6.5000   10.5000   10.5000    6.5000

奇数行のシナリオでは、最後の行を保持するとします。一般的な偶数/奇数のソリューションは次のとおりです。

>> M = magic(5) % 5 rows!
M =
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
>> Mp = [M; repmat(M(end,:),mod(size(M,1),2),1)]; % replicate last row if odd
>> Mthin = reshape(mean(reshape(Mp,2,[]),1),[],size(Mp,2))
Mthin =
   20.0000   14.5000    4.0000   11.0000   15.5000
    7.0000    9.0000   16.0000   20.5000   12.5000
   11.0000   18.0000   25.0000    2.0000    9.0000

または、行数が奇数のときに最後の行を破棄する場合は、次のようにします。

>> Mp = M(1:end-mod(size(M,1),2),:);
>> Mthin = reshape(mean(reshape(Mp,2,[]),1),[],size(Mp,2))
Mthin =
   20.0000   14.5000    4.0000   11.0000   15.5000
    7.0000    9.0000   16.0000   20.5000   12.5000

ポイントを平均化nするために、mod(size(M,1),n)最後の行の平均を保持します。

n = 5;
M = rand(972,5); % or whatever
p = mod(size(M,1),n);
r = repmat(mean(M(end-p+1:end,:),1),(p>0)*(n-p),1);
Mp = [M; r];
Mthin = reshape(mean(reshape(Mp,n,[]),1),[],size(Mp,2));

mod(size(M,1),n)そして、最後の行を捨てるために:

Mp = M(1:end-mod(size(M,1),n),:);
Mthin = reshape(mean(reshape(Mp,n,[]),1),[],size(Mp,2));
于 2013-10-23T23:00:57.283 に答える