gpt4 book ai didi

matlab - 强制矩阵的列在不同的限制内

转载 作者:行者123 更新时间:2023-12-02 07:34:37 25 4
gpt4 key购买 nike

我有一个名为 l 的矩阵,大小为 20X3。我想做的是:假设我有这个限制:

l1_max=20; l1_min=0.5;
l2_max=20; l2_min=0.5;
mu_max=20; mu_min=0.5;

我想强制矩阵 l 的所有元素都在限制范围内。l1_max 和 l1_min 中第一列的值。l2_max 和 l2_min 中第 2 列的值。mu_max 和 mu_min 中第 3 列的值。

我做的是这样的:

for k=1:20
if l(k,1)>l1_max
l(k,1) = l1_max;
elseif l(k,1)<l1_min
l(k,1) = l1_min;
end

if l(k,2)>l2_max
l(k,2) = l2_max;
elseif l(k,2)<l2_min
l(k,2) = l2_min;
end

if l(k,3)>mu_max
l(k,3) = mu_max;
elseif l(k,3)<mu_min
l(k,3) = mu_min;
end
end

可以用更好的方式完成吗?

最佳答案

您不必遍历行,对整列使用矢量化操作:

l(l(:, 1) > l1_max, 1) = l1_max;
l(l(:, 1) < l1_min, 1) = l1_min;

类似地:

l(l(:, 2) > l2_max, 2) = l2_max;
l(l(:, 2) < l2_min, 2) = l2_min;
l(l(:, 3) > l2_max, 3) = mu_max;
l(l(:, 3) < l2_min, 3) = mu_min;

另一种方法类似于 Bas 的想法,是应用 minmax,如下所示:

l(:, 1) = max(min(l(:, 1), l1_max), l1_min);
l(:, 2) = max(min(l(:, 2), l2_max), l2_min);
l(:, 3) = max(min(l(:, 3), mu_max), mu_min);

看来这两种方法的性能相当。

关于matlab - 强制矩阵的列在不同的限制内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18201729/

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