gpt4 book ai didi

MATLAB 提取列号

转载 作者:行者123 更新时间:2023-12-02 06:54:35 24 4
gpt4 key购买 nike

我的目标是创建一个随机的 20 x 5 整数数组,按照从上到下、从左到右的递增顺序对它们进行排序,然后计算所得 20 行中每一行的平均值。这给了我一个 1 x 20 的均值数组。然后我必须找到均值最接近 0 的列。这是到目前为止我的代码:

RandomArray= randi([-100 100],20,5);
NewArray=reshape(sort(RandomArray(:)),20,5);
MeanArray= mean(transpose(NewArray(:,:)))
X=min(abs(x-0))

如何将均值最接近 0 的列号存储到变量中?我只进行了大约一个月的编码,所以这可能看起来是一个非常简单的问题。谢谢

最佳答案

你就快到了。您所需要的只是一个find :

RandomArray= randi([-100 100],20,5);
NewArray=reshape(sort(RandomArray(:)),20,5);
% MeanArray= mean(transpose(NewArray(:,:))) %// gives means per row, not column
ColNum = find(abs(mean(NewArray,1))==min(abs(mean(NewArray,1)))); %// gives you the column number of the minimum
MeanColumn = RandomArray(:,ColNum);

find 将为您提供 abs(mean(NewArray)) 所在条目的索引,即每列平均值的绝对值等于同一列的最小值数组,即列的平均值最接近 0 的索引。

请注意,您不需要 MeanArray,因为它会转置(可以通过 NewArray.' 完成),然后给出每列的平均值,即您的旧行。我丢弃了 find 语句中的所有内容。

按照 comment by Matthias W. 中的建议使用min的第二个输出更快直接代替查找:

RandomArray= randi([-100 100],20,5);
NewArray=reshape(sort(RandomArray(:)),20,5);
% MeanArray= mean(transpose(NewArray(:,:))) %// gives means per row, not column
[~,ColNum] = min(abs(mean(NewArray,1)));
MeanColumn = RandomArray(:,ColNum);

关于MATLAB 提取列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35193967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com