如何在MATLAB中将指针分配给对象的属性?

佐尔坦·切萨蒂

我想创建一个面向对象的有限元程序。我有一个Node由于有限元网格(由Mesh类表示)中的节点是不同的,因此我将Node创建为值类。当实例化Node类的对象数组时,我将该对象数组分配给Mesh的nodes属性我也有一个Element类,代表一个有限元素。我还从此类创建一个对象数组,并将其分配给Mesh的element属性到目前为止还很清楚。

由于有限元节点也属于元素,因此我想将某些节点分配给适当的元素。但是复制节点会导致数据冗余,因此我想将指针分配给Node对象,以便ElementlocalNodes属性包含指向特定节点的指针数组。我应该如何修改下面的类以实现它?

节点类:

classdef Node

   properties
      coordinate;
   end

   methods
     % Not interesting for this example
   end

end

元件类:

classdef Element

   properties
      localNodes; % the object instantiated from the class Element
                  % will store an array of pointers to the
                  % appropriate elements of the object array stored
                  % in Mesh.nodes. How can I assign these pointers
                  % to Element.localNodes?
   end

   methods
     % Not interesting for this example
   end

end

类:

classdef Mesh

   properties
      nodes;    % its object will contain an object array of Node
      elements; % its object will contain an object array of Element
   end

   methods
     % Not interesting for this example
   end

end
丹尼尔

最后,在进行一些讨论之后,我将以一个起点解决这个问题:

classdef Node < handle

   properties
      coordinate;
   end

   methods
       function obj=Node(id)
           obj.coordinate=id;
       end
   end

end

classdef Mesh < handle

   properties
      nodes;    % its object will contain an object array of Node
      elements; % its object will contain an object array of Element
   end

   methods
       function obj=Mesh(nodes,elements)
           pnodes=cell(1,nodes);
           for idx=1:nodes
               pnodes{idx}=Node(idx);
           end
           obj.nodes=[pnodes{:}];
           pelements=cell(1,numel(elements));
           for idx=1:numel(elements)
               pelements{idx}=Element(obj.nodes(elements{idx}));
           end
           obj.elements=[pelements{:}];
       end
       function non_deleted_nodes=get.nodes(obj)
           %getter to return only not-deleted nodes
           obj.nodes=obj.nodes(arrayfun(@isvalid,(obj.nodes)));
           non_deleted_nodes=obj.nodes;
       end
       function non_deleted_nodes=get.elements(obj)
           %getter to return only not-deleted nodes
           obj.elements=obj.elements(arrayfun(@isvalid,(obj.elements)));
           non_deleted_nodes=obj.elements;
       end

   end

end

classdef Element < handle

   properties
      localNodes; % the object instantiated from the class Element
                  % will store an array of pointers to the
                  % appropriate elements of the object array stored
                  % in Mesh.nodes. How can I assign these pointers
                  % to Element.localNodes?
   end

   methods
       function obj=Element(localNodes)
           obj.localNodes=localNodes;
       end
       function non_deleted_nodes=get.localNodes(obj)
           %getter to return only not-deleted nodes
           obj.localNodes=obj.localNodes(arrayfun(@isvalid,(obj.localNodes)));
           non_deleted_nodes=obj.localNodes
       end
       function delete(obj)
           for ix=1:numel(obj.localNodes)
               %The 1 is not a typo, we will delete always the first
               %element until the list is empty
               obj.localNodes(1).delete();
           end
           delete@handle(obj);
       end
   end

end

最后是一个简短的演示:

m=Mesh(10,{[1,2],[2,3],[3,4]})
m.elements(1).localNodes
m.elements(1).localNodes(1).delete()
%now the node is deleted from the element and the mesh
m.elements(2).delete()
%now element 2 together with the nodes is deleted.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中将argv分配给指针变量?

来自分类Dev

如何在Swift中将int数组分配给对象数组的相应属性?

来自分类Dev

如何在blazor中将类属性分配给InputDate?

来自分类Dev

如何在SwiftUI中将nil分配给绑定对象?

来自分类Dev

如何在python中将None分配给对象引用

来自分类Dev

如何在plsql中将具有相同属性属性的对象类型属性值分配给不同的对象类型?

来自分类Dev

如果在SQLAlchemy中将“子”对象分配给“关系”,如何在“父”对象上设置属性?

来自分类Dev

如何使用原始指针将对象分配给矢量中对象的属性?

来自分类Dev

如何在Objective-C中将指针分配给变量

来自分类Dev

如何在C ++中的char指针中将数据分配给JSONCPP

来自分类Dev

如何在 Fortran 中将指针分配给复杂的 3d 数组

来自分类Dev

在实体框架中将只读属性分配给新对象

来自分类Dev

如何在MATLAB中为对象的属性分配指针?

来自分类Dev

如何在Matlab中将控制台输出分配给字符串?

来自分类Dev

如何在Matlab中将控制台输出分配给字符串?

来自分类Dev

如何在VB.net中将字节数组分配给类属性

来自分类Dev

如何在一个步骤中将多个属性分配给ActiveRecord :: Relation数组?

来自分类Dev

如何在MVC4中的EditorFor中将模型属性分配给AdditionalViewData

来自分类Dev

如何在VB.net中将字节数组分配给类属性

来自分类Dev

如何在jQuery中将显式值分配给标签属性。

来自分类Dev

如何在(MahApps)后面的代码中将水印属性分配给TextBox的文本

来自分类Dev

如何在javascript中将函数分配给对象方法?

来自分类Dev

如何在vuex的store.state中将操作分配给嵌套对象的正确键?

来自分类Dev

如何在javascript中将函数分配给对象方法?

来自分类Dev

如何在python中将对象重新分配给变量?

来自分类Dev

如何在C#中使用Task将值分配给对象的属性

来自分类Dev

如何在分配给 formControlName 的对象中添加附加属性

来自分类Dev

如何在Java中将图像分配给JLabel?

来自分类Dev

如何在VBA中将变体分配给变体?

Related 相关文章

  1. 1

    如何在C中将argv分配给指针变量?

  2. 2

    如何在Swift中将int数组分配给对象数组的相应属性?

  3. 3

    如何在blazor中将类属性分配给InputDate?

  4. 4

    如何在SwiftUI中将nil分配给绑定对象?

  5. 5

    如何在python中将None分配给对象引用

  6. 6

    如何在plsql中将具有相同属性属性的对象类型属性值分配给不同的对象类型?

  7. 7

    如果在SQLAlchemy中将“子”对象分配给“关系”,如何在“父”对象上设置属性?

  8. 8

    如何使用原始指针将对象分配给矢量中对象的属性?

  9. 9

    如何在Objective-C中将指针分配给变量

  10. 10

    如何在C ++中的char指针中将数据分配给JSONCPP

  11. 11

    如何在 Fortran 中将指针分配给复杂的 3d 数组

  12. 12

    在实体框架中将只读属性分配给新对象

  13. 13

    如何在MATLAB中为对象的属性分配指针?

  14. 14

    如何在Matlab中将控制台输出分配给字符串?

  15. 15

    如何在Matlab中将控制台输出分配给字符串?

  16. 16

    如何在VB.net中将字节数组分配给类属性

  17. 17

    如何在一个步骤中将多个属性分配给ActiveRecord :: Relation数组?

  18. 18

    如何在MVC4中的EditorFor中将模型属性分配给AdditionalViewData

  19. 19

    如何在VB.net中将字节数组分配给类属性

  20. 20

    如何在jQuery中将显式值分配给标签属性。

  21. 21

    如何在(MahApps)后面的代码中将水印属性分配给TextBox的文本

  22. 22

    如何在javascript中将函数分配给对象方法?

  23. 23

    如何在vuex的store.state中将操作分配给嵌套对象的正确键?

  24. 24

    如何在javascript中将函数分配给对象方法?

  25. 25

    如何在python中将对象重新分配给变量?

  26. 26

    如何在C#中使用Task将值分配给对象的属性

  27. 27

    如何在分配给 formControlName 的对象中添加附加属性

  28. 28

    如何在Java中将图像分配给JLabel?

  29. 29

    如何在VBA中将变体分配给变体?

热门标签

归档