2013-06-19 97 views
1

如果我有這樣的功能:Matlab函數 - 如何使用字符串輸入訪問結構?

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

我怎樣才能得到它與調用(「你好」)或成才這樣訪問結構s.hello?

方面的問題:是否也可以通過這樣的函數訪問變量「hello」?

在此先感謝,你們真棒!

回答

3

我會用動態結構的訪問,像這樣:

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

+0

我試過了,但它給我的錯誤,一個是這樣的: ???達到500的最大遞歸限制。使用set(0,'RecursionLimit',N)更改限制。請注意,超出您的可用堆棧空間可能會導致MATLAB和/或您的計算機崩潰。 我只是用像 a.hello 結構a.ciao 並與上述狀態函數 測試=調用(「你好」)把它稱爲 – Lasse

+1

@Lasse,在這裏看到我的更新,希望這是有幫助的! – macduff

+0

好吧,似乎它有結構名稱的問題,我也必須喂這個功能,對吧? – Lasse