在数组中查找最小值

11次浏览(最近30天)
Mateusz布热津斯基
Mateusz布热津斯基 3 .卡特彼勒
你好,
我有这样一个函数:
i = 1;
最小值= 1 (1200);
我> = 200
min_y = min (y (:, i));
pos_y =找到(y (:, i) = = min_y);
phi0s=x(位置y,i);
分钟(我)= phi0s;
我=我+ 1;
结束
它的任务是求出y的最小值然后给出相应的x值。
x和y是维数为nx200的数组假设我在这两个数组中存储了200个实验结果现在我需要在每一列中找到最小的y值和对应的x。
我是否可以改进它,或者在没有循环的情况下更好地运行它?我将感激任何提示!

接受的答案

里克
里克 3 .卡特彼勒
循环不慢。你通常只需要删除它们,如果有本地函数接受数组输入,这恰好是这里的情况:
%产生随机数据
n = 4;
x =兰德(n, 200);
y =兰德(n, 200);
%修正代码
i = 1;
最小值= 1 (1200);
我< = 200%为什么不在这里使用for循环?
min_y = min (y (:, i));
pos_y =找到(y (:, i) = = min_y);
phi0s=x(位置y,i);
分钟(我)= phi0s;
我=我+ 1;
结束
%矢量化
[~,idx]=min(y,[],1);
印第安纳州= sub2ind(大小(x)、idx 1:尺寸(y, 2));
Min2=x(ind);
isequal (Min2 Min)
4评论
Mateusz布热津斯基
Mateusz布热津斯基 3 .卡特彼勒
好的,谢谢,我会的

登录评论。

答案(1)

大卫•希尔
大卫•希尔 3 .卡特彼勒
[Y, idx] = min (Y);
X = X(长度(y) *(0:长度(idx) 1) + idx);

s manbetx 845


释放

R2019b

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!