2014-12-05 67 views
0

我想寫一點代碼來使結構中的變量的MATLAB散點圖。我想給代碼的結構名稱(將有許多這些結構),然後讓它做出兩個變量的散點圖。當我嘗試下面的代碼時,我收到一條錯誤消息:「???錯誤:文件:make_graphs.m行:6列:9 輸入字符在MATLAB語句或表達式中無效。從MATLAB中的結構散點圖

str2stuct= input('Please enter the string for the struct e.g. TMB_RUN_1_data:'); 

test1=strcat(str2stuct,'.NDROP_max'); 
test2=strcat(str2stuct,'.input_kappa'); 

scatter($(test2), $(test1)) 

我認爲錯誤信息可能意味着我使用方式,也MATLAB不批准的(我還沒有找到在MATLAB爲$多大用處)的美元符號。

我想它是這樣的:

str2stuct= input('Please enter the string for the struct e.g. TMB_RUN_1_data:'); 
test1=strcat(str2stuct,'.NDROP_max'); 
test2=strcat(str2stuct,'.input_kappa'); 

scatter((test2),(test1)) 

而得到這個錯誤:

"??? Error using ==> scatter at 51 
Must supply X and Y data as first arguments. 

Error in ==> make_graphs at 6 
scatter((test2),(test1)) " 

我將最後一行,如下圖所示嘗試過,但得到了同樣的錯誤與括號:

scatter(test2,test1) 

如果我使用的文字名稱如下,它工作正常。

scatter(TMB_RUN_1_data.NDROP_max,TMB_RUN_1_data.input_kappa) 

我試過一堆其他的東西,但我沒有得到它。我已經嘗試了分散的數學工作頁面,但沒有任何例子與我正在做的事情接近。我真的很困難。

編輯:我找到了一個解決方案,但我知道這不被認爲是最佳實踐。如果你可以只需解釋如何做得更好,這將是一件好事。答案應該是針對一個匆忙的白癡,而不是一個有經驗的程序員。

回答

0

使這最後一行的工作原理:

scatter(eval(test2),eval(test1)) 

據我所知,「EVAL」是令人難以接受的,因此這可能不是一個很好的長期答案,適用於現在。這似乎是讓MATLAB實際將字符串test1和test2的內容讀入相關行的方式。