如何在不使用 'find' 'min' 等内置函数的情况下找到向量 A 的最小值并索引所有最小值并调用重复项?
How to find the minimum of a vector A and index all the minimum values without using inbuilt function such as 'find' 'min' and recall duplicates too?
我的 A = [10 1 6 8 2 3 1 3]。正如我们所看到的,最小值是 1,并且在索引 2 和 7 处出现了两次。
我的 MATLAB 代码如下:
function [m,im] = myMinInd(A)
m = A(1);
im = 1;
for i = 2:length(A)
if A(i) < m
m = A(i);
im = i;
end
end
end
>> A
A =
10 1 6 8 2 3 1 3
>> [m,im] = myMinInd(A)
m =
1
im =
2
我的索引只显示第一次出现“1”,第二次不显示。有人可以帮忙吗?
在您的 for
循环中,您需要处理 A(i) == m
的情况。例如,像这样:
function [m,im] = myMinInd(A)
m = A(1);
im = 1;
for i = 2:length(A)
if A(i) < m
m = A(i);
im = i;
elseif A(i) == m
im = [im,i];
end
end
end
这导致输出 im
成为包含所有最小值索引的行向量。
我的 A = [10 1 6 8 2 3 1 3]。正如我们所看到的,最小值是 1,并且在索引 2 和 7 处出现了两次。
我的 MATLAB 代码如下:
function [m,im] = myMinInd(A)
m = A(1);
im = 1;
for i = 2:length(A)
if A(i) < m
m = A(i);
im = i;
end
end
end
>> A
A =
10 1 6 8 2 3 1 3
>> [m,im] = myMinInd(A)
m =
1
im =
2
我的索引只显示第一次出现“1”,第二次不显示。有人可以帮忙吗?
在您的 for
循环中,您需要处理 A(i) == m
的情况。例如,像这样:
function [m,im] = myMinInd(A)
m = A(1);
im = 1;
for i = 2:length(A)
if A(i) < m
m = A(i);
im = i;
elseif A(i) == m
im = [im,i];
end
end
end
这导致输出 im
成为包含所有最小值索引的行向量。