Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 更改索引值w.r.t相等检查后数组的最大值_Arrays_Matlab_Indexing_Max - Fatal编程技术网

Arrays 更改索引值w.r.t相等检查后数组的最大值

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取相同值。有什么想法吗 提前感谢以下示例显示了如何检查最大值的索引,如果它们相

我使用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取相同值。有什么想法吗


提前感谢

以下示例显示了如何检查最大值的索引,如果它们相等,则选择下一个:

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也是一样的,这绝不是你当前的问题所说的。请重写以表明它已完成,我更改了标题,这是不充分的。请把你的问题改成你想要的,并举例说明。展示你的尝试。这不是一个特别难的问题,但是如果你懒得问一个特定的问题,你就不可能得到一个特定的答案。谢谢,这正是我所做的