gpt4 book ai didi

arrays - Modelica中向量和数组的区别

转载 作者:行者123 更新时间:2023-12-02 01:56:38 25 4
gpt4 key购买 nike

我注意到 Modelica 库 (Modelica.Blocks.Continuous.TransferFunction) 中传递函数块中的以下行:

parameter Real bb[:] = vector([zeros(max(0,na-nb),1);b]);

我不明白“向量”函数调用的作用,以及为什么它是必要的。不会
parameter Real bb[:] = [zeros(max(0,na-nb),1);b];

导致相同的结果?

我在 Modelica Language Specification 3.2 中找到了以下解释,但它并没有真正帮助:

“vector(A) - 如果 A 是标量,则返回一个 1 向量,否则返回一个包含数组所有元素的向量,前提是最多只有一个维度 size > 1。”

我认为整个故事是基于 Modelica 中数组和向量之间的一些差异。如果有人帮我解决问题,我将不胜感激。

最佳答案

简单回答:向量是一维数组。

想象一下,我们声明了这样的事情:

Real x[1,5,1,1];

这东西不是只有 5 个元素,而且它们都包含在同一个维度中。那么如果我们想将其转换为一个包含 5 个元素的简单向量呢?我们可以这样做:
Real y[5] = { x[1,i,1,1] for i in 1:5 };

但这会变得乏味。替代方案是:
Real y[5] = vector(x);

编译器查看这个并自动找到具有 size>1 的维度。然后将所有元素作为向量拉出。

只是为了解决您提出的一点,这是无效的:
Real z[5] = [1,2,3,4,5];

因为左边是一个向量(一维),右边是一个数组。通常,如果您想使用右手边,左手边必须是:
Real z[1,5] = [1,2,3,4,5];

如果要将其填充到向量中,则需要将右侧从数组转换为向量,即
Real z[5] = vector([1,2,3,4,5]);

这有帮助吗?

关于arrays - Modelica中向量和数组的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19635890/

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