该帖子跟进另一个柱的最大值:find common value of one matrix in another matrix意味着基于矩阵
正如我解释,我有一个矩阵myMatrix的2549x13double
几个示例从myMatrix的线:
-7.80 -4.41 -0.08 2.51 6.31 6.95 4.97 2.91 0.66 -0.92 0.31 1.24 -0.07
4.58 5.87 6.18 6.23 5.20 4.86 5.02 5.33 3.69 1.36 -0.54 0.28 -1.20
-6.22 -3.77 1.18 2.85 -3.55 0.52 3.24 -7.77 -8.43 -9.81 -6.05 -5.88 -7.77
-2.21 -3.21 -4.44 -3.58 -0.89 3.40 6.56 7.20 4.30 -0.77 -5.09 -3.18 0.43
我已经确定了矩阵MyMatrix的每一行的最大值,如下所示:
[M Ind] = max(MyMatrix,[],2); 实施例线I得到以M:
6.95
6.23
3.24
7.20
现在,我想的2个值之前和最大值之后在myMatrix的选择,比如M发现,我将需要计算这5个值的平均值。因此,在此示例中,我想选择:
2.51 6.31 6.95 4.97 2.91
5.87 6.18 6.23 5.20 4.86
-3.55 0.52 3.24 -7.77 -8.43
3.40 6.56 7.20 4.30 -0.77
并在MyMatrix中创建一个具有这5个值的平均值的新列。
继@丹的代码,从以前的帖子采取:
colInd = bsxfun(@plus,PeakInd, -2:2);
MyMatrixT = MyMatrix.';
rowIndT = colInd.';
linIndT = bsxfun(@plus,rowIndT,0:size(MyMatrixT,1):size(MyMatrixT,1)*(size(MyMatrixT,2)-1));
resultT = MyMatrixT(linIndT);
result = resultT.';
mean(result,2)
MyMatrix = [MyMatrix, mean(result,2)];
下面是帖子的新部件,关于这个问题时,最大值是边缘附近。 当最大值是MyMatrix的第一列或最后一列时,我想要有NaN。
相反,当最大值在第二列时,我想计算考虑最大值,最大值和最大值之后的两列之前的一列的平均值。
虽然当最大值位于倒数第二列时,我想考虑最大值,最大值之前的两列以及最大值之后的一列。
如果你能帮助我,我将不胜感激。非常感谢!
敢肯定这是我的第二个代码所做的只是使用'nanmean'。所以如果你的最大值在第2列,那么你会得到类似于[NaN,6,10,4,2]的东西''所以'nanmean'会给你'[6,10,4,2]'的平均值使用1列预备和两列后面的最大... – Dan
只有添加关于@丹的评论是为了得到'NaN'如果你的最大值是在第一个或最后一列,你只需要改变它结束。(假设您要添加的列名为'M2',原始矩阵的列数为'N',则需要调用'M2(Ind == 1 | Ind == N)= NaN;') – BillBokeey
@BillBokeey否我的意思是我已经在这里完全回答了这个问题http://stackoverflow.com/a/37705364/1011724 – Dan