我有一个名为temp
的表,在工作区中我可以看到它是一个5777x50
表。但是,当我双击或使用openvar('temp')
时,Variables
查看器会在第一列中显示Properties
,在第二列中显示1x1 struct
,会弹出一个新标签。< / p>
如果我在命令窗口中输入temp
,那么表格就会打印出来。
如何在Variables
查看器中查看表格单元格?
编辑2015-12-04 :我终于找到了一个可重现的例子并确定了问题。当Variables查看器包含尺寸大于2的数组时,它不显示我的表。例如:
tmp = table(ones(50,20, 20));
如果我双击工作区中的tmp
,我会看到
如果它可以显示与在命令窗口中运行以下命令相同的信息,那将是很好的:
>> tmp(1:5, :)
Var1
________________
[1x20x20 double]
[1x20x20 double]
[1x20x20 double]
[1x20x20 double]
[1x20x20 double]
答案 0 :(得分:3)
一种可能的解决方案是在主路径中隐藏openvar.m,如上面的评论所示。为此,请将原始openvar.m的所有内容复制到另一个openvar.m文件中,并将此新文件放在路径中。
现在,在新openvar
函数的末尾添加以下代码行:
v = evalin('base',name);
if istable(v)
v = table2struct(v);
assignin('base','v', v);
variable = com.mathworks.mlservices.WorkspaceVariableAdaptor('v');
com.mathworks.mlservices.MLArrayEditorServices.openVariable(variable);
else
evalin('base','clear v');
end
代码将在基础工作区上创建一个新变量v。如果这个变量是一个表,它会在编辑器上以结构形式打开它,如果不是,它就会清除它。
这应该足以在一个新的struct变量中显示表格(我称之为v
,但在变量编辑器中使用tempname
建立一个解决方案应该很简单)给你你想要的视图。
不幸的是,这种解决方法只会给你一个假的&#34;读取原始表的访问权限,但没有&#34;假的&#34;显然,写访问权限。另一个缺点是,现在每次在桌面上调用openvar时,您都会被重定向到这个新的&#34;假的&#34; v struct变量。
使用其他名称myopenvar
创建一个新函数并调用myopenvar('tmp')
也可以,但在点击工作区中显示的变量时则不行。
(在Matlab R2015b上测试)
答案 1 :(得分:0)
您可以使用以下内容显示表格中的值:
openvar('tmp.Var1')
假设 tmp 是表的名称。
在Variables
编辑器的struct Properties
中,您会找到一个包含char VariableNames
的单元格Var1
。如果您的表包含其他具有其他名称的变量,您可以在那里找到它们。该问题与您的数据有两个以上的维度有关。