我这个程序的功能是求出这个类型的excel最大值和最小值值,但是,最小值不知道哪里错了

查看: 13202|回复: 17|关注: 0
MATLAB如何在图中标记最大值和最小值,小峰不要标记
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
图片见附件
09:49 上传
点击文件名下载附件
9 KB, 下载次数: 1637
<h1 style="color:# 麦片财富积分
没有人回复 好难过:(
关注者: 204
把你作用的数据的最大值找出来不就好了?
比方说你作图是plot(x,y)
[ymax,k] = max(y);
plot(x(k),y(k),'r.')
<h1 style="color:# 麦片财富积分
kaaaf123 发表于
把你作用的数据的最大值找出来不就好了?
比方说你作图是plot(x,y)
[ymax,k] = max(y);
谢谢你的回答,我试了一下,但是你这样的程序只能标记出一个最大值和最小值,我要标记出21个峰的最大值和最小值,这21个最大值、最小值的值都是不一样的。。。可以帮忙看看吗?、
关注者: 204
你可以把你找到峰值排序,只把那些符合条件的找出来
也可以用findpeaks的时候(我猜你本来用的就是findpeaks吧),通过几个限制参数实现
open untitled.fig
h = findobj('color','b');
x = get(h(1),'xdata');
y = get(h(1),'ydata');
delete(findobj('color','r'))
[p,l] = findpeaks(abs(y-3e4),'minpeakh',700,'minpeakd',10);
plot(x(l),y(l),'r.')
<h1 style="color:# 麦片财富积分
本帖最后由 1987rinna 于
13:31 编辑
kaaaf123 发表于
你可以把你找到峰值排序,只把那些符合条件的找出来
也可以用findpeaks的时候(我猜你本来用的就是findpeak ...
我用findpeaks加了个for循环已经把峰值点标出来了,但是他把拐点都标出了了,有些地方不是最大值,本来21个最大值,结果最后标出24个,另外三个通过for循环的条件也限制不了。。我现在想把程序的最大值求出来,然后plot,我想把程序发给你,你可以帮我看看?
关注者: 204
<font color="#87rinna 发表于
我用findpeaks加了个for循环已经把峰值点标出来了,但是他把拐点都标出了了,有些地方不是最大值,本来21 ...
你看下我5L的代码吧
注意下findpeaks后边两个参数,一个是限制最小高度的,一个是限制最小距离
<h1 style="color:# 麦片财富积分
kaaaf123 发表于
你看下我5L的代码吧
注意下findpeaks后边两个参数,一个是限制最小高度的,一个是限制最小距离 ...
按照你上面的程序确实不会多标点了,但是现在最大值和最小值都少标了一个点,因为少标的那个点的最大值和最小值对应两个横坐标,所有它没被作为极值点,漏标了,而且我以后要标记的点肯定比这多很多,而且周期性不一定这么好,可以帮我想想怎么能通过求导把21个最大值和最小值都求出来吗?
关注者: 204
你要把你的过滤规则严格的描述清楚,用计算机能懂的方式
像你1L说的,“最大值和最小值”明显最大值只能有一个值(可以是多个点但是只能有一个值),最小值也必须只有一个值,这种模糊不清的语言人类都会误解,何况计算机
只要把规则描述清楚(没有歧义,没有疏漏),不管什么样都可以话
你现在的提问方式是在让我猜你的想法
<h1 style="color:# 麦片财富积分
kaaaf123 发表于
你要把你的过滤规则严格的描述清楚,用计算机能懂的方式
像你1L说的,“最大值和最小值”明显最大值只能有 ...
这么说吧,我现在就是想通过程序把21个顶点值和21个谷点值求出来,我现在不知道要怎么写程序?
站长推荐 /2
活动资料已更新点击下载>>
Powered by输入一串整数,求出它的最大值和最小值 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 11时,
&无详细内容&
代码片段(1)
1.&[代码]编程新手,欢迎指教&&&&
#include &stdio.h&
int main(int argc, char const *argv[])
int arr[1000];
//下标从1开始,输入0就结束循环
for (i = 1; arr[i-1] != 0; ++i) {
printf("输入一个整数(等于0就结束):");
scanf("%d", &arr[i]);
//排序。。。。。。
for (j = 1; j &= i-3; ++j) {
for (k= j+1; k &= i-2; ++k) {
if (arr[j]&arr[k]) {
arr[j]=arr[j]+arr[k];
arr[k]=arr[j]-arr[k];
arr[j]=arr[j]-arr[k];
printf("min:%d,max:%d\n",arr[1], arr[i-2]);//数组最后一个数是没有值,倒数第二个是0
开源中国-程序员在线工具:
相关的代码(2869)
对应你这个题目,还有个偷懒的方法。就是在输入的for循环中进行最大和最小的比对。然后就不需要后面的排序了。这样临时变量需要3个就够了,max,min,input_value。
2楼:小熊宝宝 发表于
#include &stdio.h&
int main(void)
int min, max, in_
printf(&输入一个整数(等于0就结束):&);
scanf(&%d&, &in_value);
for ( ; in_value != 0; ) {
printf(&输入一个整数(等于0就结束):&);
scanf(&%d&, &in_value);
min = in_value & min ? in_value : min ;
max = in_value & max ? in_value : max ;
printf(&min:%d,max:%d\n&,min, max);
3楼:Pre2 发表于
引用来自“南果梨”的评论对应你这个题目,还有个偷懒的方法。就是在输入的for循环中进行最大和最小的比对。然后就不需要后面的排序了。这样临时变量需要3个就够了,max,min,input_value。哦,让我回去试一试
4楼:Pre2 发表于
引用来自“南果梨”的评论#include &stdio.h&
int main(void)
int min, max, in_
printf(&输入一个整数(等于0就结束):&);
scanf(&%d&, &in_value);
for ( ; in_value != 0; ) {
printf(&输入一个整数(等于0就结束):&);
scanf(&%d&, &in_value);
min = in_value & min ? in_value : min ;
max = in_value & max ? in_value : max ;
printf(&min:%d,max:%d\n&,min, max);
}受教了,谢谢
5楼:小熊宝宝 发表于
你的方法不能说不对,只能说你没有抓住最基本的需求。只有抓住最基本的需求才能找到最简单的解决方法。
6楼:Pre2 发表于
引用来自“南果梨”的评论你的方法不能说不对,只能说你没有抓住最基本的需求。只有抓住最基本的需求才能找到最简单的解决方法。谢了,这是课上老师出的题目,刚刚讲到数组,我就用数组来解决。你的方法很简洁。
7楼:Pre2 发表于
引用来自“南果梨”的评论对应你这个题目,还有个偷懒的方法。就是在输入的for循环中进行最大和最小的比对。然后就不需要后面的排序了。这样临时变量需要3个就够了,max,min,input_value。//根据你的思路我重新写了一下程序 #include int main(int argc, char const *argv[]) { int max=0, min=0, do { printf(&input an value(0 end):&); scanf(&%d&, &value); if (value == 0) { } if(max==0 && min==0) { max = min = } max = value & max ? value : min = value & min ? value : } while(value != 0); printf(&min:%d,max:%d\n&,min, max); return 0; }
8楼:Pre2 发表于
#include &stdio.h&
int main(int argc, char const *argv[])
&& &int max=0, min=0,
&& &&& &printf(&input an value(0 end):&);
&& &&& &scanf(&%d&, &value);
&& &&& &if (value == 0) {
&& &&& &&& &
&& &&& &if(max==0 && min==0) {
&& &&& &&& &max =
&& &&& &&& &min =
&& &&& & max = value & max ? value :
&& &&& & min = value & min ? value :
&& &} while(value != 0);
&& &printf(&min:%d,max:%d\n&,min, max);
&& &return 0;
9楼:小熊宝宝 发表于
& & & & if(max==0 && min==0) {&
& & & & & & max =&
& & & & & & min =&
& & & & }&
作用就是判断是不是第一次输入,你这里每次循环都要判断,没觉得浪费么?还不如把第一次输入单独提出来,减少判断次数。
& & & & &if (value == 0) {&
& & & & & &&
& & & & }&
while(value != 0);&
这俩是重复判断,把if (value == 0) 去掉也可以。副作用就是最后输入0的时候多走一遍后面的流程,但是减少了每次的if判断。在这里多走一遍流程不影响结果。
或者while(value != 0)写为while(1)就行了,因为你前面if (value == 0) break已经判断并退出了。
如果按照我的改,最后你这个就是我那个for方法的do while写法。
10楼:水一风云 发表于
引用来自“南果梨”的评论& & & & if(max==0 && min==0) {&
& & & & & & max =&
& & & & & & min =&
& & & & }&
作用就是判断是不是第一次输入,你这里每次循环都要判断,没觉得浪费么?还不如把第一次输入单独提出来,减少判断次数。
& & & & &if (value == 0) {&
& & & & & &&
& & & & }&
while(value != 0);&
这俩是重复判断,把if (value == 0) 去掉也可以。副作用就是最后输入0的时候多走一遍后面的流程,但是减少了每次的if判断。在这里多走一遍流程不影响结果。
或者while(value != 0)写为while(1)就行了,因为你前面if (value == 0) break已经判断并退出了。
如果按照我的改,最后你这个就是我那个for方法的do while写法。
如果按照你的for循环写法,那最小值不就一直是0了么
11楼:小熊宝宝 发表于
引用来自“水一风云”的评论引用来自“南果梨”的评论& & & & if(max==0 && min==0) {&
& & & & & & max =&
& & & & & & min =&
& & & & }&
作用就是判断是不是第一次输入,你这里每次循环都要判断,没觉得浪费么?还不如把第一次输入单独提出来,减少判断次数。
& & & & &if (value == 0) {&
& & & & & &&
& & & & }&
while(value != 0);&
这俩是重复判断,把if (value == 0) 去掉也可以。副作用就是最后输入0的时候多走一遍后面的流程,但是减少了每次的if判断。在这里多走一遍流程不影响结果。
或者while(value != 0)写为while(1)就行了,因为你前面if (value == 0) break已经判断并退出了。
如果按照我的改,最后你这个就是我那个for方法的do while写法。
如果按照你的for循环写法,那最小值不就一直是0了么恩。是的。应该按照楼主的方法加个 if (in_value == 0) 当时没想到那么多,写完光测试了,正+负的情况。如果全是正整数最小始终是0,如果是全是负整数最大始终是0。正负数都有才正常。
12楼:渡世白玉 发表于
放在vector里,然后用std::sort排序、、取第一个和最后一个即可、、
用这串数做map的key、、取头或尾、、
哈哈哈、、我是不是更懒、、应该还有更懒的、、
13楼:萨斯辈的呼唤 发表于
引用来自“渡世白玉”的评论放在vector里,然后用std::sort排序、、取第一个和最后一个即可、、
用这串数做map的key、、取头或尾、、
哈哈哈、、我是不是更懒、、应该还有更懒的、、这个方法刚好符合楼主学习使用容器的解答了,梨哥的那个更注重代码效率吧
14楼:Pre2 发表于
引用来自“渡世白玉”的评论放在vector里,然后用std::sort排序、、取第一个和最后一个即可、、
用这串数做map的key、、取头或尾、、
哈哈哈、、我是不是更懒、、应该还有更懒的、、我不懂C++啊。。。。。。
15楼:渡世白玉 发表于
引用来自“Pre2”的评论引用来自“渡世白玉”的评论放在vector里,然后用std::sort排序、、取第一个和最后一个即可、、
用这串数做map的key、、取头或尾、、
哈哈哈、、我是不是更懒、、应该还有更懒的、、我不懂C++啊。。。。。。那就当我没说吧、、其实梨哥的就是最佳答案、、你存到一个数组里,在比较,就很慢了、而且多消耗内存的、、存到数组的话,还是用排序吧,快排、、别一个一个的比了、、太浪费了、、、
开源从代码分享开始
Pre2的其它代码}

我要回帖

更多关于 函数的最大值与最小值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信