如何将一个向量的参数插入另一个向量中?



我有一个大小为"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;

需要注意的两件重要事项:

  1. cat()的第一个参数是数组应连接的维度
  2. 标量放在大括号中以使其成为矢量。这样做是为了满足下面找到的第一个"规则"。因此,除了第一个参数之外,cat()的每个参数都有一个维度。

来自Modelica语言规范,第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

最新更新