gpt4 book ai didi

matlab - 结构域是函数matlab

转载 作者:行者123 更新时间:2023-12-02 21:53:50 26 4
gpt4 key购买 nike

我问这个问题是为了测试一个概念。我并不是想在代码中提出解决方案,我只是需要关于继续的方向的建议。

我想创建一个结构字段,它始终是同一结构的其他字段的函数。

我已经能够实现可以修改现有结构并使用新字段更新它的代码。但如果不重新初始化代码,这将不起作用,这是不理想的。

我需要能够添加另一个结构,为其某些字段赋予值,然后通过我定义的函数自动更新其余字段。

结构是完成这项任务的正确方法吗?我认为不是,但我不确定可以使用什么方法。

我附加了一个非常简单的代码片段来演示该问题。

    module = struct('dim', [ 3 1 0.05], ...
'point', [0 0 0], ...
'shape', cubeshape(module.dim,module.point))
% cubeshape is my function of dim & point

matlab 返回错误......

    Undefined function or variable 'dim'.

这是有道理的,因为 struct() 函数尚未关闭这意味着模块结构尚未定义。

如果我的问题太新手,请告诉我我可以继续研究,但一些指导将不胜感激。

谢谢!

最佳答案

您可以将'shape'字段设置为function handle :

module = struct('dim', [3 1 0.05], ...
'point', [0 0 0], ...
'shape', @()cubeshape(module.dim,module.point))

然后通过访问'shape'字段的值

module.shape()

但是,您会发现,如果更改结构中 module.dim 的值,module.shape() 返回的值不会更新。这是因为两个函数句柄参数是在实例化时设置的。你可能不想要这个。相反,您可以将 module.dimmodule.point 作为参数传递到函数句柄中:

module = struct('dim', [3 1 0.05], ...
'point', [0 0 0], ...
'shape', @(dim,point)cubeshape(dim,point))
module.shape(module.dim,module.point)

虽然不太优雅,但解决了问题,因为将使用 module.dimmodule.point 的当前值。

还有许多其他方法可以解决您的问题。最标准的是通过object-oriented approaches 。然而,有时,这就像用大锤打苍蝇(在 Matlab 中为 a very slow sledgehammer sometimes)。您也许可以使用函数来完成您需要的操作并重新思考您的问题。

关于matlab - 结构域是函数matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18110556/

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