Arrays 更改索引值w.r.t相等检查后数组的最大值
我使用Matab 2014a,我有3个数组rx,ry和rz,包含相关值,我提取每个数组的最大值的索引,如下所示:Arrays 更改索引值w.r.t相等检查后数组的最大值,arrays,matlab,indexing,max,Arrays,Matlab,Indexing,Max,我使用Matab 2014a,我有3个数组rx,ry和rz,包含相关值,我提取每个数组的最大值的索引,如下所示: [~, idx] = max(rx); [~, idy] = max(ry); [~, idz] = max(rz); 这3个索引应该不同,所以我检查这3个索引之间的相等性,我想要的是如果idx==idz | | | idx==idz | | idy==idz,我如何为idz取第二个最大值,为ry和idy取相同值。有什么想法吗 提前感谢以下示例显示了如何检查最大值的索引,如果它们相
[~, idx] = max(rx);
[~, idy] = max(ry);
[~, idz] = max(rz);
这3个索引应该不同,所以我检查这3个索引之间的相等性,我想要的是如果idx==idz | | | idx==idz | | idy==idz
,我如何为idz取第二个最大值,为ry和idy取相同值。有什么想法吗
提前感谢以下示例显示了如何检查最大值的索引,如果它们相等,则选择下一个:
rx = [9, 8, 7, 6, 5];
ry = [4, 9, 3, 2, 1];
rz = [4, 3, 2, 1, 0];
[~, idx] = max(rx);
[~, idy] = max(ry);
[~, idz] = max(rz);
equal = 1; % flag
while equal
if idx==idy
disp(['Max index for ry is the same: ' num2str(idy)]);
disp ('Changing ry...');
% Remove the max value
ry(idy) = 0;
[~, idy] = max(ry);
disp (['Recalculating idy for new max: ' num2str(idy)])
end
if idx==idz || idy==idz
disp(['Max index for rz is the same: ' num2str(idz)]);
% Remove the max value
rz(idz) = 0;
[~, idz] = max(rz);
disp (['Recalculating idz for new max: ' num2str(idz)])
end
% Check the changes made
if idx==idy || idx==idz || idy==idz
equal = 1;
else
equal = 0;
end
end
在while循环的第一次迭代中,您将得到
rz的最大索引相同:1
重新计算新最大值的idz:2
因为idy(4)和idx(9)(最大值)都有指数1。在第二次迭代期间:
rz的最大索引相同:2
重新计算新最大值的idz:3
idy和idz的值相等,因此再次重新计算idz。在此之后,3个索引是不同的:
idx=1
idy=2
idz=3
您想知道这些值是否都不同吗<代码>结果=idx~=idy&idy~=idz&idz~=idx或
result=all(diff([idx idz idz idx]))
谢谢你的回答,我知道如何检查值是否不同,我想要的是如果[code](idx==idy | | idx==idz | | idz==idz),如何通过提取rz数组的第二个最大值来更改idz值,对于idz也是一样的,这绝不是你当前的问题所说的。请重写以表明它已完成,我更改了标题,这是不充分的。请把你的问题改成你想要的,并举例说明。展示你的尝试。这不是一个特别难的问题,但是如果你懒得问一个特定的问题,你就不可能得到一个特定的答案。谢谢,这正是我所做的