找原数据中最大值的位置?
有矩阵y=,我的意思是:如果求出每一列的最大值,但是最大值不能再第一行,如果某列的最大值在第一行的话,那么要舍弃而从第二行开始取剩余行的最大值,如果不在第一行,那么便要这个最大值,并且还要求出这样计算下来的最大值在矩阵中的位置。请问该怎么办?或者用哪个函数呢?{:{13}:} =max(y(2:end,:))I=I+1C是你要求的各列的最大值;
I是各列最大值对应的行数;
是不是这个意思 回复 2 # 雪缘 的帖子
我怎么看着好像这个“不在第一行”要一直递归下去……就是说,列索引范围(2:end)的最大值如果是第2行的话……还要继续算列索引范围(3:end)的最大列范围,直到(i:end)的最大列不是第i列为止……
请楼主解释真相…… 回复 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中的位置呢? 回复 3 # Rainyboy 的帖子
不好意思,是我表达不对!恩我已经把思路重新写在上面,还请多帮忙!谢谢{:3_53:} 本帖最后由 ChaChing 于 2011-3-11 00:04 编辑
若LZ可以确定矩阵都是正数, 简单使用tril即可
y= ;
=max(tril(y,-1)); I
若矩阵可能为负数, 使用
y= ;
y(find(triu(y)))=min(y(:)); =max(y); I
回复 4 # cboboc 的帖子
解决了吗? 本帖最后由 cboboc 于 2011-3-27 17:15 编辑
回复 7 # ChaChing 的帖子
还没有解决,我的意思可能大家没理解,我就是实验采集了一些数据,我想找出每一个测点的数据中的最大值,但是对于这个最大值,我不想要开始几秒钟内的,所以就想将测点采集到的数据从一定的时间或者点数开始,然后找最大值。我把数据附上 水平有限,还在理解楼主的意思,呵呵{:{35}:} 回复 8 # cboboc 的帖子
不了解楼主的意思! 直接把前面采集的数据取消掉呢? 回复 1 # cboboc 的帖子
试试find,
m=max(max(y));
=find(y==m);
就是y最大值点的坐标
页:
[1]