我试图编写一些代码来制作结构中变量的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)
我已经尝试了很多其他的东西,但我没有得到它。我已经尝试过分散的数学工作页面,但是没有与我正在做的事情相近的例子。我真的很困难。
编辑:我找到了解决方案,但我知道这不是最佳做法。如果你能够简单地解释如何更好地做到这一点,那就更好了。答案应该是针对蠢货而不是经验丰富的程序员。答案 0 :(得分:0)
将此作为最后一行:
scatter(eval(test2),eval(test1))
我知道'eval'是不受欢迎的,所以这可能不是一个好的长期答案,现在适用。这似乎是让MATLAB实际读取字符串test1和test2的内容到相关行中的方法。