小编Tob*_*ias的帖子

对整数变量的非离散赋值

表达式的非离散赋值是否只能在algorithm一个整数内function

如果算法中需要许多模型参数,则直接在模型的算法部分中计算输出值会简单得多.

如果使用函数,则必须从环境中传递所有需要的参数值作为函数的输入.

在我看来,Modelica规范迫使一个人在函数内本地封装具有非离散赋值的整数.

这种整数赋值的一个可能的用例是,人们希望将传递特性表示为具有紧凑支持的平滑基函数的总和.

对于计算,某个输入值x 1的输出值必须确定其支持包含x的基函数的索引.

我将列表数据的线性插值的更简单的情况作为工作示例,其中必须找到插值间隔(即使这样的插值不可微).

noEvent(...)代码中是不是真的需要,因为一个函数的算法部分内部关系,如果注释不产生事件GenerateEvents=true没有给出.

尽管如此,我还是将它包含在内,以显示对整数的非离散赋值的i结果.

model testInterpol
function interpol
        input Real x;
        input Real tab[:,2];
        output Real y;
protected
        Integer i;
algorithm
  i:=size(tab,1);
  for ii in 2:size(tab,1) loop
   if noEvent(x < tab[ii,1]) then
    i := ii;
    break;
   end if;
  end for;
   y := tab[i-1,2] + (tab[i,2]-tab[i-1,2])/(tab[i,1]-tab[i-1,1])*(x-tab[i-1,1]);
end interpol;

Real x = 10*sin(8*atan(1.0)*time);
parameter Real tab[:,2]={{1,1},{2,4},{3,9},{5,25},{6,36}};
Real y;
equation
        y = interpol(x,tab);
end testInterpol;
Run Code Online (Sandbox Code Playgroud)

在以下模型中,类型Interpol …

modelica

18
推荐指数
0
解决办法
601
查看次数

引发访问冲突的安全方法

nullptr除了每次访问都会导致访问冲突之外,是否有一种安全的方法可以在 C++ 中创建指针?

我不成功的尝试之一是将 1 添加到nullptr.

在我的特殊情况下,我需要 Visual Studio 2019 的解决方案。

c++

5
推荐指数
0
解决办法
225
查看次数

锥形规格

关于car和cdr的Wikipedia页面说a cons是一对指针.

以下代码似乎证实:

(progn
  (setq a '(1 . 2))
  (setq b a)
  (setf (car b) 10)
  (print a))
Run Code Online (Sandbox Code Playgroud)

对该形式的评估给出了缺点(10 . 2).设置carb变化cara.您可以在compileonline.com上在线代表中尝试.

Common Lisp规范中定义的行为在哪里?

(我已经阅读了一些文字,但找不到针对该行为的部分.)

有趣的是,维基百科上的conses页面说" cons构造存储两个或指向值的内存对象".如果原子1直接存储在cons对象中,那么改变b不会改变a,是吗?

我在上面假设ab保持cons对象而不是指向conses的指针.即使实际的lisp实现与指针一起使用,这在repl级别上也不应该是可见的,还是应该根据规范?当人们假设ab保持指向两者的指针时,可以实现类似的效果cons. Consing,即通过重复应用来构建列表cons,支持假设conses由符号值中的指针表示.

以下两种形式是等效的:

(let ((a '(1)))
  (setq b (cons 2 a)))
Run Code Online (Sandbox Code Playgroud)
(setq b '(2 1))
Run Code Online (Sandbox Code Playgroud)

common-lisp

1
推荐指数
1
解决办法
68
查看次数

如何访问存储在向量中的对象的成员?

给出问题的代码如下.我已经评论了哪些部分提供了正确的输出,哪些没有,但我不知道为什么,以及我应该如何正常访问类成员数据.我读到尝试在C风格循环中访问并不是很好,但我尝试使用迭代器只能遇到"错误:不匹配'运算符<='(操作数类型是'播放器'和'__gnu_cxx :: __ normal_iterator>')"

class Player
{
public:
    Player() {}
    Player(double strength) {}
    virtual ~Player() {}
    double GetStrength() const {
        return Strength;
    }
    void SetStrength(double val){
        Strength = val;
    }
    int GetRanking() const{
        return Ranking;
    }
    void SetRanking(int val){
        Ranking = val;
    }
    int GetATPPoints() const{
        return ATPPoints;
    }
    void SetATPPoints(int val){
        ATPPoints = val;
    }
protected:
private:
    double Strength; //!< Member variable "Strength"
    int Ranking; //!< Member variable "Ranking"
    int ATPPoints; //!< Member variable "ATPPoints"
};

int main()
{ …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

-1
推荐指数
1
解决办法
80
查看次数

标签 统计

c++ ×2

common-lisp ×1

modelica ×1

stl ×1

vector ×1