n个数值选出最大m个数的数值

查看: 5814|回复: 8|关注: 0
如何找到矩阵里数值最大的极值点和数值第二大的极值点?
有一个一维矩阵,比如a=[3,4,7,2,1,5,9,6,8,1]
我想找出这几个数里的最大的极值点和第二大的极值点,即数9和8,并且得到他们两个的位置
请问如何编程实现呢?
[b,c]=sort(a);
d=c(size(a,2)-1:end)
对应的分别是次大值和最大值的位置
[ 本帖最后由 yangwuow 于
17:52 编辑 ]
我要找极值点,就是局部最大值,这个代码是整体最大值的
可能我的例子不好,a=[2,5,9,4,13,19,10]
要找出的点是两个波峰点,即9和19,而不是13和19
关注者: 38
a=[2,5,9,4,13,19,10]
pks = findpeaks(a)
& &&&9& & 19
我试了一下,我的matlab里没有findpeaks这个命令,我的matlab版本是7.1的,请问findpeaks这个函数在哪里可以找到呢?
关注者: 38
回复 6# hanjj1123 的帖子
高版本里面有
还有 已经两天了 你才回帖
前两天上不了网。。。。
yangwuow 发表于
=sort(a);
d=c(size(a,2)-1:end)
对应的分别是次大值和最大值的位置
很好用,厉害
站长推荐 /1
Powered by48小时热门评论
一周热点资讯
穿着情趣丝袜就出来开车,这让人怎么把持的住? 日本是全球啪啪啪最不活跃国家,人均一年不到48次
姑娘,这秤其实不太准,要不我用手帮你测量一下? 太细的腿一点都不好玩,还是肥肥的比较有肉感!
小米“新玩具”售价2999元,可续航45公里。 我的苹果不可能这么丑!网友:江郎才尽了吗?
CopyRight&2004年-年 < 游迅网 All Rights Reserved
备案编号:沪ICP备号-6世界上最大的数字是多少?
风纪社██1141
兆=M 是百万**从电脑上我们就可以看出来了!现实中数字我们用到的最平常的是 亿 当然还有更大的!有个文摘 一起看看 :天无意中在网上看到了一篇文章,讲Google的来历,原来是来自一个单词googol,一个大数的名字,10的100...
为您推荐:
其他类似问题
这可能是 Google 公益广告汉化者的失误,当然不存在最大的数字。我猜测问题应该是“数学最大素数”。   迄今为止,人类发现的最大的素数是 ,这是第 41 个 梅森(Mersenne)素数。
  素数也叫质数,是只能被自己和 1 整除的数,例如2、3、5、7、11等。2500 年前,希腊数学家欧几里德证明了素数是无限的,并提出少量素数可写成...
扫描下载二维码获取数据库中最大的数值并加1返回,如何做 - C#当前位置:& &&&获取数据库中最大的数值并加1返回,如何做获取数据库中最大的数值并加1返回,如何做&&网友分享于:&&浏览:1601次获取数据库中最大的数值并加1返回,怎么做?我数据库中有一个字段是外键,但该字段不是自动增长,而是通过时间获得一个字符串,对数据库中的该字段进行查询,返回最大值,该字段类型是char(100),返回后加一再写入数据库,但是C#类型有严格限制,无法进行转换,请教如何处理?
string & exec=(string)sqlcmd.ExecuteScalar();//sqlcmd是sqlCommand对象实例,其他省略
由于返回的是string类型,想将返回的值加一好难,就是Int32 & returnValue=(Int32)exec+1;
但失败,该字段存储的都是数字却仍然失败. ------解决方案--------------------count出来数据条数,然后在 int 转换 。在
------解决方案--------------------Convert.ToInt32()方法转换试试,再不行直接在SQL语句里转。
------解决方案--------------------string str =
&select uid from tables1 order by uid desc &;
DataSet ds = new DataSet();
ds = myac.ExecuteSqlDs(str,
if (ds.Tables[ &id &].Rows.Count &
id = Convert.ToInt32(ds.Tables[ &id &].Rows[0][0]) + 1;
然后再写进去就好了
------解决方案--------------------是不是数字太大了 或者用convert.toint64
Int64 returnValue=convert.toint64(exec)+1;
------解决方案--------------------string exec=(string)sqlcmd.ExecuteScalar();
int tmp = Convert.ToInt32(exec);
tmp = tmp+1;
//tmp写回数据库
------解决方案--------------------在数据库中转换 用convert或cast
------解决方案--------------------string exec=(string)sqlcmd.ExecuteScalar();//sqlcmd是sqlCommand对象实例,其他省略
由于返回的是string类型,想将返回的值加一好难,就是Int32 returnValue=(Int32)exec+1;
---------------------------
应该是你的sqlcmd返回的值不对,你的sql语句是什么
------解决方案--------------------在数据库里转,直接返回给C#
------解决方案--------------------在数据库中转换?
可以用convert,如:convert(decimal(18,0), &#39; &#39;)等
也可以取出你需要的部分,如天,小时等单独加一
我觉得你可能没有描述清楚
------解决方案--------------------select isnull(max(keyid),0) from news
------解决方案--------------------string exec=(string)sqlcmd.ExecuteScalar();
返回空值就出错误,说无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。
-------------------------------
string exec=Convert.ToString(sqlcmd.ExecuteScalar());
------解决方案--------------------我觉得,在数据库能转,在.net中也能转.在c#用Convert类转,在数据库convert()转.
------解决方案--------------------判断一下为空的情况。
------解决方案--------------------路过,顶一下
------解决方案--------------------在数据库写个函数不就OK了吗?为何要到前台来做?要是一笔记录都没有,就会出现DBnull的错误!
====返回表 ddzd中的下一个TO编号
function get_TONextno(@date datetime)
returns varchar(20)
DECLARE @YEAR VARCHAR(2)
DECLARE @NEWNO VARCHAR(20)
SET @YEAR=SUBSTRING(CONVERT(VARCHAR(4),YEAR(@date)),3,2)
SELECT @NEWNO=MAX(ddbh) FROM dddd
WHERE SUBSTRING(ddbh,3,2) and ddbh like
&#39;TO% &#39; and len(ddbh)=8
IF @NEWNO IS NULL
SET @NEWNO= &#39;TO &#39;+ &#39;0001 &#39;
SET @NEWNO= &#39;TO &#39;+RIGHT( &#39;000000 &#39;+CONVERT(VARCHAR, CONVERT(BIGINT,SUBSTRING(@NEWNO,5,4))+1),4)
return @newno
------解决方案-------------------- 共&2&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有一个能将给定非负整数数组中的数字排列成最大数字的函数
最近在网上看到这样一个题目,自己琢磨了一下。
java version &1.8.0_40&
// 编写一个能将给定非负整数数组中的数字排列成最大数字的函数。
// 例如,给定[50,2,1,9],最大数字为95021。
public class Sort {
public static void main(String args[]){
int number[] = {1,2,3,32,335,34,7,6,9};
int number1[] = {312,321,};
System.out.println(SortMax(number));
System.out.println(SortMax(number1));
public static String SortMax(int num[]){
int number[] = new int[num.length];
for (int i = 0; i & num. i++) {
number[i] = num[i];
int max = 0;
int min = 0;
StringBuffer s = new StringBuffer();
for (int i = 0; i & number. i++) {
for (int j = i + 1; j & number. j++) {
Integer x = number[i];
Integer y = number[j];
int tempX = Integer.parseInt(x.toString() + && + y.toString());
int tempY = Integer.parseInt(y.toString() + && + x.toString());
//关键点,转为String类型拼接起来,再转回int类型进行比较
if(tempX & tempY){
number[i] =
number[j] =
for (int i = 0; i & number. i++) {
s.append(number[i]);
return s.toString();
*///:输出String类型
程序的关键点在于拼接比较大小。两个for循环嵌套实现排序。x和y是Integer对象。内层for循环开始时就要进行一次赋值。我始终是用number[i]来进行比较。
如果不重新赋值,会造成意想不到的错误。比如下面这个例子,在内层for循环前初始化x。
// 错误示范
// 未重新初始化对象
public class Sort {
&& &public static void main(String args[]){
&& &&& &int number[] = {1,2,3,32,335,34,7,6,9};
&& &&& &int number1[] = {9,8,55,222,8};
&& &&& &System.out.println(SortMax(number));
&& &&& &System.out.println(SortMax(number1));
&& &public static String SortMax(int num[]){
&& &&& &int number[] = new int[num.length];
&& &&& &for (int i = 0; i & num. i++) {
&& &&& &&& &number[i] = num[i];
&& &&& &int max = 0;
&& &&& &int min = 0;
&& &&& &StringBuffer s = new StringBuffer();
&& &&& &for (int i = 0; i & number. i++) {
&& &&& &&& &Integer x = number[i];&& &//把x放到内层for循环前面
&& &&& &&& &for (int j = i + 1; j & number. j++) {
&& &&& &&& &&& &Integer y = number[j];
&& &&& &&& &&& &int tempX = Integer.parseInt(x.toString() + && + y.toString());
&& &&& &&& &&& &int tempY = Integer.parseInt(y.toString() + && + x.toString());
&& &&& &&& &&& &//关键点,转为String类型拼接起来,再转回int类型进行比较
&& &&& &&& &&& &if(tempX & tempY){
&& &&& &&& &&& &&& &max =
&& &&& &&& &&& &&& &min =
&& &&& &&& &&& &}
&& &&& &&& &&& &else{
&& &&& &&& &&& &&& &max =
&& &&& &&& &&& &&& &min =
&& &&& &&& &&& &}
&& &&& &&& &&& &number[i] =
&& &&& &&& &&& &number[j] =
&& &&& &&& &}
&& &&& &for (int i = 0; i & number. i++) {
&& &&& &&& &s.append(number[i]);
&& &&& &return s.toString();
这是个错误的结果
这个结果竟是正确的
*///:输出String类型
在这个错误范例中,内层for循环跑完一次后,Integer对象y被回收,对象x包含的值是1。number[0] == 2 ,number[1] ==1,x的value为1。内层for循环中j = 2,
对象x的值1会与number[2]进行比较。排序后,number[2] == 1,number[0] == 3。以此类推,数组number接下来的值都会变成1。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 excel最大数值 的文章

 

随机推荐