2015-03-24 26 views
-1

我正在使用具有多個函數編寫新變量的代碼。我試圖將所有不同功能的值保存到另一個功能中。如何在Matlab中將多個函數的值提取爲一個值?

例子:

function LoadNews(obj) 
    args.sir = obj.sir; 
    args.date = obj.date; 
    args.news = news; 
    BSQL.save_star_stats(args);  

function LoadMoons(obj) 
    args.moon = moon; 
    args.comet = comet; 
    BSQL.save_star_stats(args); 

function LoadLight(obj) 
    args.light = light; 
    args.speed = speed; 
    BSQL.save_star_stats(args); 

我跑在此之後,我得到以下錯誤:

Reference to non-existent field 'comet'. 

是否有一個簡單的方法來抓住從多個函數值,並將其保存到一個?

+0

這段代碼需要更多的上下文。具體而言,在這種情況下,諸如'news','moon','comet','light'和'speed'等變量是未定義的。此外,'args'似乎被引用,但沒有聲明......與「BSQL」相同。這些「全局」變量?因爲這個代碼不會運行。 – rayryeng 2015-03-25 05:13:20

回答

0

如果我正在解釋你想完成什麼,你希望在每次函數調用時改變args。具體而言,您希望args記住在每個函數調用時分配給它的所有字段。通過將每個函數的輸出設置爲args,並將其作爲輸入提供,可以很容易地完成。簡單地說:

function args = LoadNews(args, obj) 
    args.sir = obj.sir; 
    args.date = obj.date; 
    args.news = news; 
    BSQL.save_star_stats(args);  

function args = LoadMoons(args, obj) 
    args.moon = moon; 
    args.comet = comet; 
    BSQL.save_star_stats(args); 

function args = LoadLight(args, obj) 
    args.light = light; 
    args.speed = speed; 
    BSQL.save_star_stats(args); 

一旦做到這一點,你可以嘗試調用像這樣的代碼:

args = LoadNews(args, obj); 
args = LoadMoons(args, obj); 
args = LoadLight(args, obj); 

這是送給你的代碼和它的上下文的當前狀態,我最好的猜測。一旦你完成了上面的代碼,args應該記住你在運行所有功能時所做的一切。

相關問題