2014-12-05 72 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的内容读入相关行的方式。