matlab中的拖曳图形
我想知道是否可以在MatlabUITable中拖动模式值。在电子表格中,要输入1到50之间的值,需要输入1,2,3,然后选择单元格并拖动。请用matlab uitable完成这项工作好吗?关于。在matlab中的拖曳图形,matlab,matlab-uitable,Matlab,Matlab Uitable,我想知道是否可以在MatlabUITable中拖动模式值。在电子表格中,要输入1到50之间的值,需要输入1,2,3,然后选择单元格并拖动。请用matlab uitable完成这项工作好吗?关于。在uitable中插入数据(通常是矩阵)以显示在表格中。因此,与Excel不同的是,uitable函数只是一种显示数据的形式,而不是一种操作数据的工具。有关更多信息,请参阅。但是,如果要为从1到10运行的实例设置行,可以使用以下步骤: 因此,假设您想显示一个大小为10x10的矩阵,例如。 A=magic(
uitable
中插入数据(通常是矩阵)以显示在表格中。因此,与Excel不同的是,uitable
函数只是一种显示数据的形式,而不是一种操作数据的工具。有关更多信息,请参阅。但是,如果要为从1到10运行的实例设置行,可以使用以下步骤:
因此,假设您想显示一个大小为10x10的矩阵,例如。
A=magic(10)代码>
您现在可以设置一个表t
,通过
t=uitable('Data',A)代码>
在您的情况下,如果希望一行为1到10,只需更改包含数据的矩阵a
,使用
A(1,1:10)=1:10代码>
然后重新执行前一个命令以调出表t
这是可以做到的。但远不如使用excel那么舒适
对下面的代码稍加修改,您可以尝试对其进行改进或根据需要进行更改。我认为这是一个很好的起点
function fancyTable
defaultData = randi(99,25,2);
h = figure('Position',[300 100 402 455],'numbertitle','off','MenuBar','none');
uitable(h,'Units','normalized','Position',[0 0 1 1],...
'Data', defaultData,...
'Tag','myTable',...
'ColumnName', [],'RowName',[],...
'ColumnWidth', {200 200},...
'CellSelectionCallback',@cellSelect);
end
function cellSelect(src,evt)
try
index = evt.Indices;
data = get(src,'Data');
L = size(index,1);
rows = index(:,1);
column = index(1,2);
start = data(rows(1),column);
newdata = start:(start+L-1);
data(rows,column) = newdata';
set(src,'Data',data);
end
end
它创建了一个包含两列的表:
可以选择数据,并根据第一个值立即应用所需的拖动模式
代码只是基于相应的值在第一个选择点插入一系列递增的值最难的部分是检测模式我刚刚计算了第一个数据值start=data(行(1),列)代码>您还可能需要最少选择3:start=data(行(1:3),列)代码>。您可能需要使用大量的try
/catch
结构来跳过所有无法解释的情况。或者从一开始就使用开关
/大小写
结构来计算选择的长度和模式
总之,这是一项艰巨的任务,我不确定是否值得。但是这是可以做到的。谢谢你的帖子。正如你所说,它的工作顺序是递增的。我将处理您的代码,以便在拖动时可以保持相同的值。但既然这是可以完成的(即使任务很繁重),我会尝试是否能处理好,并给你反馈。我非常感激。问候。感谢您提供有关uitable的信息。我非常感谢你的反馈。您好。thewaywewalk,您提供的答案很神奇。我不确定您要我做什么。但您无法更改它以检测多个模式?-我很想帮你更多的忙,但是我没有时间,这也不是小事,我还得做很多尝试和错误。让我知道,如果你什么时候完成这项任务,我会感兴趣的。祝你好运目前,我只能让第一列增量设置,而让其他列在拖动时设置相同的值。我只改变了你有用代码中的一两件事。我试着让它像传统的电子表格一样工作,你可以选择两个或更多的单元格并拖动,但我被卡住了。无论如何,我会继续努力。非常感谢,我们走的路。