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

3

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

我很感激你的帮助。

1个回答

5
下面的代码应该可以实现你想要的功能:
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的大小外,必须具有相同的数组大小,即对于1 <= j <= ndims(A) and j <> ksize(A,j) = size(B,j)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接