Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中更改表的行和列名_Matlab_User Interface - Fatal编程技术网

如何在Matlab中更改表的行和列名

如何在Matlab中更改表的行和列名,matlab,user-interface,Matlab,User Interface,我在Matlab中创建了一个GUI,如下所示: 我需要知道是否可以在运行时更改表的行和列名,而不是一些静态名称 是否有任何方法可以做到这一点,或者如何以其他方式做到这一点?如果您的GUI不是使用指南构建的,您可以像这样设置/修改uitable属性(直接从): 然后,您可以在执行期间使用以下命令修改列名: cnames = {'Z-Data','Y-Data','X-Data'}; set(t,'ColumnName',cnames); 剩下的唯一事情就是决定哪个事件将触发此修改,并编写适当的

我在Matlab中创建了一个GUI,如下所示:

我需要知道是否可以在运行时更改表的行和列名,而不是一些静态名称


是否有任何方法可以做到这一点,或者如何以其他方式做到这一点?

如果您的GUI不是使用指南构建的,您可以像这样设置/修改uitable属性(直接从):

然后,您可以在执行期间使用以下命令修改列名:

cnames = {'Z-Data','Y-Data','X-Data'};
set(t,'ColumnName',cnames);
剩下的唯一事情就是决定哪个事件将触发此修改,并编写适当的回调函数。如果您能提供一些有关GUI的详细信息,它可能会很有用

如果您是通过GUIDE构建GUI,我不知道这是否可行(我想是的,但我通常更喜欢避免使用GUIDE,所以我在这方面的知识有限)

更新:

作为一个例子,我写了一小段代码来说明这一点。在本例中,触发列名更改的事件是一个按钮,但它可以是任何东西,希望这有帮助

% GUI
function so_uitable
% Layout
figure('units','normalized','position',[0.1 0.1 0.5 0.5],'tag','figure');
data=guihandles(gcf);
uitable('parent',data.figure,'units','normalized', ... 
    'Position', [0.1 0.1 0.35 0.8],'tag','table');
uicontrol('style','pushbutton','string','Change columns names', ... 
    'parent',data.figure,'units','normalized', ... 
    'Position',[0.55 0.8 0.35 0.1],'tag','button', ... 
    'callback',@button_callback);
data=guihandles(gcf); 
% Data
data.matrix=rand(3);
data.cnames={'X-Data','Y-Data','Z-Data'};
set(data.table,'data',data.matrix,'ColumnName',data.cnames);
guidata(gcf,data);
end
% Callback
function button_callback(obj,event)%#ok
data=guidata(gcbf);
n=length(data.cnames);
prompt=cell(n,1);
answer=inputdlg(prompt,'Change columns names',1,data.cnames);
if(~isempty(answer))
    data.cnames=answer;
    set(data.table,'ColumnName',data.cnames);
end
guidata(gcbf,data);
end

如果您的GUI不是使用指南构建的,您可以这样设置/修改uitable属性(直接从):

然后,您可以在执行期间使用以下命令修改列名:

cnames = {'Z-Data','Y-Data','X-Data'};
set(t,'ColumnName',cnames);
剩下的唯一事情就是决定哪个事件将触发此修改,并编写适当的回调函数。如果您能提供一些有关GUI的详细信息,它可能会很有用

如果您是通过GUIDE构建GUI,我不知道这是否可行(我想是的,但我通常更喜欢避免使用GUIDE,所以我在这方面的知识有限)

更新:

作为一个例子,我写了一小段代码来说明这一点。在本例中,触发列名更改的事件是一个按钮,但它可以是任何东西,希望这有帮助

% GUI
function so_uitable
% Layout
figure('units','normalized','position',[0.1 0.1 0.5 0.5],'tag','figure');
data=guihandles(gcf);
uitable('parent',data.figure,'units','normalized', ... 
    'Position', [0.1 0.1 0.35 0.8],'tag','table');
uicontrol('style','pushbutton','string','Change columns names', ... 
    'parent',data.figure,'units','normalized', ... 
    'Position',[0.55 0.8 0.35 0.1],'tag','button', ... 
    'callback',@button_callback);
data=guihandles(gcf); 
% Data
data.matrix=rand(3);
data.cnames={'X-Data','Y-Data','Z-Data'};
set(data.table,'data',data.matrix,'ColumnName',data.cnames);
guidata(gcf,data);
end
% Callback
function button_callback(obj,event)%#ok
data=guidata(gcbf);
n=length(data.cnames);
prompt=cell(n,1);
answer=inputdlg(prompt,'Change columns names',1,data.cnames);
if(~isempty(answer))
    data.cnames=answer;
    set(data.table,'ColumnName',data.cnames);
end
guidata(gcbf,data);
end

我使用GUIDE创建了一个表,下面的代码行能够成功地设置行名称:

set(data.table, 'ColumnName',data.cnames);

我使用GUIDE创建了一个表,下面的代码行能够成功地设置行名称:

set(data.table, 'ColumnName',data.cnames);

谢谢您的回答,但是我使用GUIDE构建了GUI。有解决方案吗?我认为它的工作方式大致相同,只是您必须使用GUIDE提供的回调函数和对象句柄。有一个简单的视频教程()解释了如何在GUIDE中使用回调和对象句柄。您可以从本视频开始,尝试从回调中修改uitable属性,并查看其效果。不幸的是,我很少有使用指南的经验,所以我不知道它将如何运行,但我相信这是可能的。谢谢你的回答,但我使用指南构建了GUI。有解决方案吗?我认为它的工作方式大致相同,只是您必须使用GUIDE提供的回调函数和对象句柄。有一个简单的视频教程()解释了如何在GUIDE中使用回调和对象句柄。您可以从本视频开始,尝试从回调中修改uitable属性,并查看其效果。不幸的是,我很少有指南的经验,所以我不知道它将如何工作,但我相信这是可能的。