让X = [1, 2, 3, 4, 5]
和Y = [1, 2, 1, 0, 1]
成为X
映射到Y
的向量。
现在,我想确定Y
的最大值和最小值,这很简单:[value_min, id_min] = min(Y) = [0, 4]
和[value_max, id_max] = max(Y) = [2, 2]
。
然后,我想删除与X
中的最小值相对应的Y
元素,并在X
中对应Y
中的最大值的元素展开,同时保留数字分数相等。对于此示例,我们删除了X(4)=[]
。然后我们展开X(2)=(X(2) - X(1))/2
和X(3)=(X(3) - X(2))/2
,使X
看起来像X = [1, 1.5, 2.5, 3, 5]
。我怎样才能做到这一点?我认为有一个普遍的问题。
现在,以下剪辑应适用于任何长度为N
的向量。请注意,第一个和最后一个元素是固定的。
[value_max, id_max] = max(Y(2:N-1));
X(id_max) = (X(id_max) - X(id_max-1))/2;
X(id_max+1) = (X(id_max+1) - X(id_max))/2;
[value_min, id_min] = min(Y(2:N-1));
X(id_min)=[];
答案 0 :(得分:0)
以下是您的问题的解决方案,但您应该注意一些事项
% Any Vector should work
X=[1 2 3 4 5];
Y=[1 2 1 0 1];
%We dont need the actual min max
[~,MIN]=min(Y(2:end-1));
[~,MAX]=max(Y(2:end-1));
%you dont look at the first element so the index has to be increased by 1
MIN=MIN+1;
MAX=MAX+1;
X(MIN)=[];%taking out the smallest element
Xnew= [X(1:MAX) X(MAX:end)]; %Extend the vector by taking the MAX value twice
%the mean for 2 elements is A+B/2
Xnew(MAX)=mean(Xnew(MAX-1:MAX)); %the left one and the element next to it
Xnew(MAX+1)=mean(Xnew(MAX+1:MAX+2)); %the right one and the element next ot it
%rewrite X and clear Xnew
X=Xnew;
clear Xnew;