cboboc 发表于 2011-3-10 16:26

找原数据中最大值的位置?

有矩阵y=,我的意思是:如果求出每一列的最大值,但是最大值不能再第一行,如果某列的最大值在第一行的话,那么要舍弃而从第二行开始取剩余行的最大值,如果不在第一行,那么便要这个最大值,并且还要求出这样计算下来的最大值在矩阵中的位置。请问该怎么办?或者用哪个函数呢?{:{13}:}

雪缘 发表于 2011-3-10 16:34

=max(y(2:end,:))
I=I+1C是你要求的各列的最大值;
I是各列最大值对应的行数;
是不是这个意思

Rainyboy 发表于 2011-3-10 18:20

回复 2 # 雪缘 的帖子

我怎么看着好像这个“不在第一行”要一直递归下去……就是说,列索引范围(2:end)的最大值如果是第2行的话……还要继续算列索引范围(3:end)的最大列范围,直到(i:end)的最大列不是第i列为止……
请楼主解释真相……

cboboc 发表于 2011-3-10 19:45

回复 2 # 雪缘 的帖子

不好意思我之前表达的不明白:就是我想要每一列中的最大值,但是但是要求第一列中最大值不能出现在第一行,第二列中的最大值不能出现在第一行和第二行,只能从第三行一下找,如果出现在第二行或者出现在第一行,那么忽略,而从第二列的剩下的几行中来确定一个新的最大值,以此类推,第三行的最大值不能出现在第三行以上的行数上,。。。。
我的意思是想这样:
y=
=max(y),用这个命令求出来的最大值有的在第一行山上,那么我想用if语句,所以我就想写成这样的:
for i=1:7
d=1
if i<2+(i-1)
M(i)=max((2+(i-1)):end,i)
else
M(i)=C(i)
end
end
不知道我表达清楚了没有,还有就是这样确定好最大值序列M以后,我怎样才能达到M中的数值在y中的位置呢?

cboboc 发表于 2011-3-10 19:46

回复 3 # Rainyboy 的帖子

不好意思,是我表达不对!恩我已经把思路重新写在上面,还请多帮忙!谢谢{:3_53:}

ChaChing 发表于 2011-3-11 00:04

本帖最后由 ChaChing 于 2011-3-11 00:04 编辑

若LZ可以确定矩阵都是正数, 简单使用tril即可
y= ;
=max(tril(y,-1)); I

若矩阵可能为负数, 使用
y= ;
y(find(triu(y)))=min(y(:)); =max(y); I

ChaChing 发表于 2011-3-27 15:53

回复 4 # cboboc 的帖子

解决了吗?

cboboc 发表于 2011-3-27 17:14

本帖最后由 cboboc 于 2011-3-27 17:15 编辑

回复 7 # ChaChing 的帖子

还没有解决,我的意思可能大家没理解,我就是实验采集了一些数据,我想找出每一个测点的数据中的最大值,但是对于这个最大值,我不想要开始几秒钟内的,所以就想将测点采集到的数据从一定的时间或者点数开始,然后找最大值。我把数据附上

meiyongyuandeze 发表于 2011-3-27 19:39

水平有限,还在理解楼主的意思,呵呵{:{35}:}

ChaChing 发表于 2011-3-28 00:04

回复 8 # cboboc 的帖子

不了解楼主的意思!

刘颖慧 发表于 2011-4-2 14:49

直接把前面采集的数据取消掉呢?

zhenzhy 发表于 2011-4-7 13:00

回复 1 # cboboc 的帖子

试试find,
m=max(max(y));
=find(y==m);
就是y最大值点的坐标
页: [1]
查看完整版本: 找原数据中最大值的位置?