1

我想知道是否可以在 matlab uitable 中拖动模式值。在电子表格中,要输入 1 到 50 之间的值,您需要输入 1、2、3 并选择单元格并拖动。请问这可以在matlab uitable中完成吗?问候。

4

2 回答 2

1

可以办到。但不如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(rows(1),column);,您可能还需要最少选择 3: start = data(rows(1:3),column);。您可能需要使用大量try/catch结构来跳过所有无法解释的情况。或者您从一开始就使用switch/case结构来评估选择的长度并评估模式。

总而言之,这是一项艰巨的任务,我不确定是否值得。但这是可以完成的。

于 2014-01-02T10:54:42.853 回答
0

uitable您插入要在表格中显示的数据(通常是矩阵)中。因此,与 Excel 不同,该uitable函数只是一种显示数据的形式,而不是一种操作数据的工具。请参阅此处了解更多信息。但是,如果您想设置一个从 1 到 10 运行的行,您可以使用以下步骤:

所以说一个人想显示一个大小为 10x10 的矩阵,例如 A=magic(10);

您现在可以设置一个表格t来显示此矩阵

t=uitable('Data',A);

在您的情况下,如果您想要一行,例如 1 到 10,只需更改A包含您的数据的矩阵以使用该行保存该行

A(1,1:10)=1:10;

并重新执行之前的命令来调出你的表t

于 2014-01-02T09:16:26.167 回答