gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:30:46 26 4
gpt4 key购买 nike

我有一个大小为“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 Language Specification ,第 10.4.2 节数组串联:

函数cat(k,A,B,C,...)连接数组 A,B,C,...沿维度 k根据以下规则:

  • 数组 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 .

关于arrays - 如何将一个向量的参数插入另一个向量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64333964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com