【问题标题】:Matlab Functions - How do I access structures with string-input? [duplicate]Matlab 函数 - 如何使用字符串输入访问结构? [复制]
【发布时间】:2013-06-19 16:37:39
【问题描述】:

如果我有这样的功能:

function [ out ] = call(a)
out = s.a
end

如何让它通过 call('hello') 或类似的方式访问结构 s.hello?

附带问题:是否也可以使用这样的函数访问变量“hello”?

提前谢谢你们,你们太棒了!

【问题讨论】:

    标签: string matlab function


    【解决方案1】:

    我会像这样使用动态结构访问:

    s.(a)
    

    通过Mathworks website!了解更多信息

    另外,如果我们查看您的示例函数,我注意到您没有将结构作为参数传递,也许它是全局的,但这里有一个使用您的函数作为框架的技术示例:

    function out = call(s,a)
      out = s.(a);
    end
    

    然后要使用该功能,我尝试:

    >> s = struct('hello',42)
    
    s = 
    
        hello: 42
    
    >> call(s,'hello')
    
    ans =
    
        42
    

    效果很好,没有递归限制!如果您仍然获得递归函数,请尝试将更多代码添加到问题中,我们将深入了解!

    HTH

    【讨论】:

    • 我已经试过了,但它给了我错误,一个是这样的:???达到最大递归限制 500。使用 set(0,'RecursionLimit',N) 更改限制。请注意,超出可用堆栈空间可能会使 MATLAB 和/或您的计算机崩溃。我只是简单的使用了a.hello a.ciao之类的结构,并用上面的状态函数调用了test = call('hello')
    • @Lasse,在这里查看我的更新,希望对您有所帮助!
    • 好吧,似乎结构名称有问题,我也必须提供函数,对吧?
    猜你喜欢
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多