我对MatLab很新。我正在处理由传感器制作的巨大矩阵,所以我将使用较小的矩阵作为我的问题的例子。
假设我有这两个矩阵
矩阵1
1 1 1 1 1 1 0 0 6 0 0 0
0 1 1 1 1 0 0 0 0 4 0 0
1 1 1 1 1 1 0 0 3 3 0 0
0 2 2 6 0 1 3 1 2 1 1 3
0 0 2 6 0 1 2 1 2 1 1 2
0 2 4 0 1 0 0 2 2 1 2 0
矩阵2
0 2 1 4 0 0 0 1 1 3 2 0
0 2 1 2 5 0 1 2 3 3 1 0
0 1 2 3 0 0 0 1 2 2 0 0
2 2 2 2 0 1 0 3 2 2 2 0
2 2 2 4 0 2 3 1 2 2 2 2
2 2 2 4 0 2 0 3 2 2 3 2
3 2 1 5 0 1 0 1 3 3 4 1
0 3 1 6 0 1 1 2 3 2 2 1
0 2 1 4 0 1 1 2 3 2 0 0
我想将它们调整为两个大小相同的矩阵(比如说每行4行)而不会丢失平均值,所以如果我们有一个8行矩阵,则必须删除所有其他行而不是第一行或最后4行。
任何人都可以帮助我吗?
答案 0 :(得分:2)
无需使用imresize
(这是图像处理工具箱的一部分)。您可以通过使用尺寸并使用mean
:
n
行
result = squeeze(mean(reshape(permute(matrix,[1 3 2]),n,[],size(matrix,2))))
例如:
matrix = [ 1 1 1 1 1 1 0 0
0 1 1 1 1 0 0 0
1 1 1 1 1 1 0 0
0 2 2 6 0 1 3 1
0 0 2 6 0 1 2 1
0 2 4 0 1 0 0 2 ];
n = 2;
给
result =
0.5000 1.0000 1.0000 1.0000 1.0000 0.5000 0 0
0.5000 1.5000 1.5000 3.5000 0.5000 1.0000 1.5000 0.5000
0 1.0000 3.0000 3.0000 0.5000 0.5000 1.0000 1.5000
答案 1 :(得分:1)
要删除所有其他行,您可以使用:
M(1:2:end,:)=[]
这并不能保持所有情况下的平均值,已经提到的imresize
可能是一个选项。