24小时热门版块排行榜    

查看: 870  |  回复: 4

huangfumin

木虫 (著名写手)

[求助] 简单数组最值求解-谢谢

各位大matlab同仁,

     我在做一个最值求解,元素数据为一个数组(3×25006),如附件Data -01(需要在matlab中打开)中的D所示。第一行相当于坐标x,第二行为坐标y,第三行为(x,y)坐标对应的温度。x有很多是重复的,也有y是重复的。

   目标:
    1.  第一个程序:每一个x对应的y最大值。程序中用了两个for语句(嵌入式),第一个循环-取得所有的列,第二个循环-找到与第一个循环时的x值一样的其他列。

    2.   第二个程序:在一个小区域内dx=0.3,内,求y的最大值。所有的子区域构成一个完整区域0~20(第一个子区域为0~0.3,第二个子区域为0.3~0.6,第三个子区域为0.6~0.9,依次类推 .....)。在每个子区域内的D(1,j)可能会有很多,或者没有。所以我在程序中添加了for语句和if语句进行了查找和相关命令。

附件的m文件的% Find the maximum at each x和% Find the maximum at a range分别为第一个和第二个程序,但都存在问题。

望各位帮忙看一下,谢谢 。
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)


ben_ladeng: 专家考核存档 2011-11-11 00:28:35
臭水沟(金币+1): 谢谢交流~~ 2011-11-11 12:43:00
你这个表述有点问题吧,求y的最大值,有意义吗,因该是求第三列温度的最大值,及对应y的坐标值吧。
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
2楼2011-11-10 23:26:09
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

huangfumin

木虫 (著名写手)

引用回帖:
2楼: Originally posted by dbb627 at 2011-11-10 23:26:09:
你这个表述有点问题吧,求y的最大值,有意义吗,因该是求第三列温度的最大值,及对应y的坐标值吧。

您好,谢谢您的回复。这个程序并没有考虑第三行的温度,且最大温度对我之后的分析和模型没有什么大作用。

        第一个程序想在众多x,y数据中,找到在特定x(也是针对于第一行的数据)下的最大y值。第一个for语句确定了当前的D(1,j)列,嵌入式的for用于查找与上一级的x相同时对应的列,如果相同的话,然后在对其y进行比较,并保留较大值。由于两个for语句都是对j进行了,所以在第二个for之前对第一级的列数j进行保留(赋值给一个新的参数),并在第二级for语句之后,进行返回(将新参数的保留的j值再给回给j)。但程序也有很严重的问题,还望指点,谢谢。

      第二个程序希望在dx子区域求y最大值。将总的的x区域0~20划分为很多子区域,每个子区域的宽度为dx。如果令参数x3=0(用于确定范围),ym=0(用于找到最大y值), 需要在D数据的D(1,j)进行遍取(所以用来一个for语句), 并判断D(1,j)是否在x3~x3+dx间,如果在,且ym小于D(2,j)的话,则将D(2,j)的值赋给ym,这样ym就保留最值点。同时由于每次就进行了一个字区域判断,所以有一个while语句,使得所有的子区域dx构成了总的x区域(0~20)。但我的那个程序有些问题,一直都没有找出来。还望帮忙看一下,谢谢。
3楼2011-11-11 10:56:21
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★
臭水沟(金币+3): 谢谢应助~~ 2011-11-11 15:37:28
huangfumin(金币+3): 谢谢版主了。 2011-11-12 09:31:06
第一问;
CODE:
load data.mat
D1=D';
x=D1(:,1);y=D1(:,2);
[B,I,J] = unique(x);%去掉重复x
clear I J D D1
  yb=[];
for i=1:length(B);
     k=find(x==B(i));%查找重复的x
     yb(i)=max(y(k));%查找重复的x对应y的最大值
end
plot(B,yb)



The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
4楼2011-11-11 15:06:02
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★
臭水沟(金币+3): 谢谢应助~~ 2011-11-11 15:37:40
huangfumin(金币+2): 谢谢版主了。 2011-11-12 09:31:15
第二问 B,yb来自第一问
[code]
yb=yb‘;
[X,I]=sort(B,1,'ascend');
Y=yb(I);
dx=0:0.3:20;
n=length(dx)-1;
ym=[];
for i=1:n
     kx=find(X>dx(i)&X<=dx(i+1));
     ym(i)=max(Y(kx));
end
plot(dx(2:end),ym)
[code]


The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
5楼2011-11-11 15:25:36
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 huangfumin 的主题更新
信息提示
请填处理意见