作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个模型,其中一个 Modelica 变量是另一个变量的三角波。首先我尝试了 Floor() 函数,如下所示:
model test1
final constant Real pi=2*Modelica.Math.asin(1.0);
parameter Real b = 1;
parameter Real a = 1;
Real x,p,u;
equation
if sign(sin(x*pi/b))>=0 then
p=a*(x-b*floor(x/b));
else
p=a*(b-(x-b*floor(x/b)));
end if;
x=time;
u = floor(x/b);
end test1
(x=时间;是任意的,因此模型可以编译)
放大:
不知何故,在下一步之前 0.005 秒,下限函数表现出意外,并成为以下一个值结尾的线性函数。
然后我尝试了 ceil() 函数。一切似乎都是正确的,直到我意识到 ceil() 函数在其他值(例如 x=13)时也会发生同样的问题
如果您可以的话,我将不胜感激:
附注我正在使用这个“波函数”来模拟两个锯齿状物体之间的相互作用”
最佳答案
如果您被允许使用 Modelica 标准库,您可以使用具有线性插值和周期性外推的 CombiTimeTable 模块构建参数化、基于时间的锯齿形信号。例如,
model Test4
parameter Real a=2 "Amplitude";
parameter Real b=3 "Period";
Real y=zigzag.y[1] "Zigzag";
Modelica.Blocks.Sources.CombiTimeTable zigzag(
table=[0,0;b/4,a;b/4,a;b/2,0;b/2,0;3*b/4,-a;3*b/4,-a;b,0],
extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic)
annotation(Placement(transformation(extent={{-80,60},{-60,80}})));
Modelica.Blocks.Sources.Trapezoid trapezoid(
amplitude=2*a,
rising=b/2,
width=0,
falling=b/2,
period=b,
offset=-a)
annotation(Placement(transformation(extent={{-80,25},{-60,45}})));
annotation(uses(Modelica(version="3.2.2")));
end Test4;
关于modelica - 在 Modelica 中生成三角波函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42138669/
我有一个绕其 3 轴旋转的立方体,当 key[a] == true 时,它会向左旋转,就好像它正在滚动一样。将立方体向任何方向旋转 45 度,将其向后旋转 90 度,以获得继续的错觉。这将保持 3
我是一名优秀的程序员,十分优秀!