【发布时间】:2021-03-15 15:35:05
【问题描述】:
假设我有向量
Real x[5]={1,2,3,4,5};
和
Real y[5]={0,0,0,0,0};
我想给y的元素赋值给x的某些条件,例如,对于x中大于或等于3的每个元素,对应的y应该设置为1,对于每个x<3: y=sin(x)
在matlab中,我会这样写:
y(x>=3)=1;
y(x<3)=sin(x(x<3));
所以
x=[1 2 3 4 5]
结果
y=[sin(1) sin(2) 1 1 1]
在 Modelica 中可以做类似的事情吗?如果可以,如何做?
【问题讨论】:
-
我认为这样的事情会起作用:y = if (x[i] >= 3) then 1 else sin(x[i]) for i in size(x, 1);跨度>
-
@Adrian:您示例中的语法似乎是错误的,至少对于方程式而言。你会把它放在哪里?
-
我还没有测试过,所以可能有点不对劲。在方程式中,您将使用 for 循环。
-
也许您可以将赋值移动到一个函数中,然后使用此处所述的自动矢量化:mbe.modelica.university/behavior/arrays/functions/… 另外请务必阅读有关数组理解的内容:mbe.modelica.university/behavior/arrays/construction/…
标签: arrays vector indexing modelica