【发布时间】:2017-04-15 19:19:38
【问题描述】:
在 Matlab 中,我有一个 2x3 矩阵 A,如下所示:
A = [1 2 3; 4 5 6];
这个矩阵是在一个接受参数T的函数内部定义的。我需要处理两种情况:
- T
- T >= 10
如果用户输入,比如说,T=40,那么应该选择 A 的第二行来进行计算。另一方面,如果说 T=5,则应选择 A 的第一行。
我可以这样写一个简单的 if-else 条件:
if (T<10)
b = A(1,:) * ... %Do whatever with the first row
else
b = A(2,:) * ... %Do whatever with the second row
end
但是我想知道是否可以使用 Matlab 索引来节省自己必须在我的代码周围编写这个 if-else 条件的开销(这个条件必须在我程序的不同部分检查多次)。
例如,我希望达到像A(T<10, :) 这样的简单表达式,如果 T=10 会返回空矩阵。
我已经绞尽脑汁好几个小时了,但在优化 Matlab 脚本方面我还是个新手。谁能把我踢到正确的方向?
【问题讨论】:
-
如果你的目标只是减少重复的 if-else 块,你可以先定义一个变量
rowSelector。然后在你的函数的开始你可以设置rowSelector只用一个 if-else 块然后做A(rowSelectr,:)。 -
嗯,真的@jrook。你知道 Matlab 是否承认 rowSelectr = T
-
我不这么认为。您可以使用this answer 作为解决方法。在任何情况下,函数顶部的单个 if-else 块都无需担心,它比任何 聪明 解决方案更有效,每次您想选择一行时都会计算该行。
-
我明白了,谢谢你的时间。
标签: matlab