如何将一个向量的参数插入另一个向量中?
How to insert arguments of a vector inside another vector?
我有一个大小为“5”的“重心”向量:
parameter Length barycenters[5] = {1, 2, 3, 4, 5};
我想将这个向量的参数添加到另一个大小为“7”的向量 (b_prime) 中,这意味着 b_prime = {0, 1, 2, 3、4、5、10}。
怎么可能在 Modelica 中编写代码行来做到这一点?我已尝试以下操作,但收到错误消息:
parameter Length b_prime[7] = {0, barycenters[1:5], 10};
或
parameter Length b_prime[7] = {0, barycenters, 10};
非常感谢你的帮助。
以下代码应该可以满足您的要求:
model CombineVectors
import Modelica.SIunits.Length;
parameter Length barycenters[5] = {1, 2, 3, 4, 5};
parameter Length b_prime[7] = cat(1, {0}, barycenters, {10});
end CombineVectors;
需要注意两件重要的事情:
cat()
的第一个参数是数组应该连接的维度
- 标量放在大括号中,使它们成为矢量。这样做是为了满足下面找到的第一个“规则”。因此
cat()
除了第一个参数之外的每个参数都有一维。
来自 Modelica Language Specification,第 10.4.2 节数组串联:
函数 cat(k,A,B,C,...)
根据以下规则沿维度 k
连接数组 A,B,C,...
:
- 数组
A, B, C, ...
必须具有相同的维数,即 ndims(A) = ndims(B) = ...
- 数组
A, B, C, ...
必须是类型兼容的表达式(第 6.6 节),给出结果元素的类型。最大扩展类型应该是等价的。可以混合使用实数和整数子类型,从而生成一个实数结果数组,其中整数已转换为实数。
- k 必须表征现有维度,即
1 <= k <= ndims(A) = ndims(B) = ndims(C);
k
应为整数。
- 大小匹配:数组
A, B, C, ...
必须具有相同的数组大小,但维度 k
的大小除外,即 size(A,j) = size(B,j)
,对于 1 <= j <= ndims(A) and j <> k
。
我有一个大小为“5”的“重心”向量:
parameter Length barycenters[5] = {1, 2, 3, 4, 5};
我想将这个向量的参数添加到另一个大小为“7”的向量 (b_prime) 中,这意味着 b_prime = {0, 1, 2, 3、4、5、10}。 怎么可能在 Modelica 中编写代码行来做到这一点?我已尝试以下操作,但收到错误消息:
parameter Length b_prime[7] = {0, barycenters[1:5], 10};
或
parameter Length b_prime[7] = {0, barycenters, 10};
非常感谢你的帮助。
以下代码应该可以满足您的要求:
model CombineVectors
import Modelica.SIunits.Length;
parameter Length barycenters[5] = {1, 2, 3, 4, 5};
parameter Length b_prime[7] = cat(1, {0}, barycenters, {10});
end CombineVectors;
需要注意两件重要的事情:
cat()
的第一个参数是数组应该连接的维度- 标量放在大括号中,使它们成为矢量。这样做是为了满足下面找到的第一个“规则”。因此
cat()
除了第一个参数之外的每个参数都有一维。
来自 Modelica Language Specification,第 10.4.2 节数组串联:
函数 cat(k,A,B,C,...)
根据以下规则沿维度 k
连接数组 A,B,C,...
:
- 数组
A, B, C, ...
必须具有相同的维数,即ndims(A) = ndims(B) = ...
- 数组
A, B, C, ...
必须是类型兼容的表达式(第 6.6 节),给出结果元素的类型。最大扩展类型应该是等价的。可以混合使用实数和整数子类型,从而生成一个实数结果数组,其中整数已转换为实数。 - k 必须表征现有维度,即
1 <= k <= ndims(A) = ndims(B) = ndims(C);
k
应为整数。 - 大小匹配:数组
A, B, C, ...
必须具有相同的数组大小,但维度k
的大小除外,即size(A,j) = size(B,j)
,对于1 <= j <= ndims(A) and j <> k
。