gpt4 book ai didi

matlab - 结构字段是函数 matlab

转载 作者:行者123 更新时间:2023-12-02 04:55:13 25 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/

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