首页 文章

具有x轴的Matlab矩阵中的行的线图是最大值

提问于
浏览
0

我是新来的,也是matlab的新手 .

我在matlab中有一个矩阵文件,我想要做的是绘制所有行的平均值 . 但是,我只想在该行中的最大值之前和之后绘制几个数据点(大约20) . 矩阵文件有550列 .

我已经弄清楚如何识别这个最大值的最大值和列数;

[maxvalue maxindex] = max(filename, [], 2)

由于最大值永远不会在同一列中,我真的需要帮助计算每一行的平均值(在最大值之前和之后),然后如何在x轴上绘制最大值为0的位置 .

例如 - 我有一个像这样的矩阵;

14    51   623    23     4     1     4     5
 0     0     3     5    67    37    37     5
 0     0     0     0   574     4     5     6

和最大值= 623 67 574

和最大指数= 3 5 5

所以我想,绘制3行的平均值,最大值前后2个数据点...所以绘制平均值;

14, 51, 623, 23, 4, 1
3, 5, 67, 37, 37
0, 0, 574, 4, 5

非常感谢您的帮助!

1 回答

  • 1
    data = [14    51   623    23     4     1     4     5
             0     0     3     5    67    37    37     5
             0     0     0     0   574     4     5     6]; %// example data
    data = data.'; %'// it's easier to work along columns
    [~, pos] = max(data); %// position of maxima
    ind = bsxfun(@plus,bsxfun(@plus, pos,(-2:2).'),(0:size(data,2)-1)*size(data,1));
    %'// linear index into the matrix obtained from pos
    data_trimmed = data(ind).'; %'// index and transpose back
    data = data.'; %'// undo transpose to put data back into shape
    

    结果:

    data_trimmed =
    
        14    51   623    23     4
         3     5    67    37    37
         0     0   574     4     5
    

相关问题