早教吧 育儿知识 作业答案 考试题库 百科 知识分享

matlab 找出x所对应的最大值y,有一组x,每一个x对应很多y值如题所述,假设我的x范围从(-50,50),y的范围从(0 50),其中的每一个x值都对应着多个y值以及yz值相对应的速度,现在我想找出每一个x

题目详情
matlab 找出x所对应的最大值y,有一组x,每一个x对应很多y值
如题所述,假设我的x范围从(-50,50),y的范围从(0 50),其中的每一个x值都对应着多个y值以及yz值相对应的速度,现在我想找出每一个x值上最大的速度,与此同时找出此速度所对应的y值.
例如 我现在知道 x y w 有(1,2,1)(1,3,2)(1,4,3),(2,2,4)(2,4,5)(2,6,8)
我最后想得到想x=1是,max w=3m,y=4; x=2时,max w=8,y=6.以此类推.我大概一共有几万个数据,所以不能自己找出来.
▼优质解答
答案和解析
不清楚你的数据形式,以下的 x、y、w 是分开的向量
clear,clc
x = [1 2 3 1 2 3 3 3]; y = rand(size(x)); w = rand(size(x));
j = 1; a = zeros(length(unique(x)),3);%初始化
for i = unique(x) %获得x的不同值
ind_x = (x == i); % x 某一相同值的所有位置
y1 = y(ind_x); w1 = w(ind_x); %与该 x 对应的y、w的值
[w_max,ind_w] = max(w1); y_ref = y1(ind_w); %获得w最大值,及对应y
a(j,:) = [i,y_ref,w_max]; %将找到的x、y、z存入a的一行
j = j+1;
end
a %输出结果