在MATLAB中从结构中制作散点图

时间:2014-12-05 17:36:34

标签: matlab struct scatter-plot

我试图编写一些代码来制作结构中变量的MATLAB散点图。我想给代码命名结构的名称(将有许多这些结构),然后让它来制作两个变量的散点图。当我尝试下面的代码时,我收到一条错误消息," ???错误:文件:make_graphs.m行:6列:9 输入字符在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)

我已经尝试了很多其他的东西,但我没有得到它。我已经尝试过分散的数学工作页面,但是没有与我正在做的事情相近的例子。我真的很困难。

编辑:我找到了解决方案,但我知道这不是最佳做法。如果你能够简单地解释如何更好地做到这一点,那就更好了。答案应该是针对蠢货而不是经验丰富的程序员。

1 个答案:

答案 0 :(得分:0)

将此作为最后一行:

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

我知道'eval'是不受欢迎的,所以这可能不是一个好的长期答案,现在适用。这似乎是让MATLAB实际读取字符串test1和test2的内容到相关行中的方法。