【发布时间】:2018-05-29 13:09:06
【问题描述】:
我正在创建一个 Nx3 uitable,因为当 N 很高时,它似乎比多个文本编辑容易得多。我将列初始化为单元格数组,以便最初获得一个“空”表。
hinitial = cell(N,1);
hfinal = cell(N,1);
hporosity = cell(N,1);
DataInput = [hinitial;hfinal;hporosity];
ColumnName = {'n_Initial','n_Final','Porosity'};
ColumnFormat = {'numeric', 'numeric', 'numeric'};
ColumnEditable = [false true false];
htable = uitable(fig,'Units','pixels','Position',[20 20 260 204],...
'Data', DataInput,...
'ColumnName', ColumnName,...
'ColumnEditable', ColumnEditable);
1) 使用此按钮,我想将数据循环打印到第一列。
function uploadbutton_Callback(source,eventdata)
S = load('n.mat');
for K = 1:N
set(htable(K,1),'Data',num2cell(S.n(K)));
end
end
但这只会打印该列的第一行。然后显示此错误。
Index exceeds matrix dimensions.
Error in bandprovaprog/uploadbutton_Callback (line 122)
set(htable(K,1),'Data',num2cell(S.n(K)));
Error while evaluating UIControl Callback.
2) 在第二列中,我想手动输入数据,然后使用按钮将结果保存在 mat 文件中。到目前为止,我的努力是这样的:
function donebutton_Callback(source,eventdata)
m = zeros(1,N);
for J = 1:N
m(J) = str2double(get(hfinal{J},'String'));
end
save('m.mat','m');
end
3) 最后一列再次使用 set 在第三列中打印,所以我想一旦我知道该怎么做就可以做到 1)
EDIT2:完成按钮回调的编辑
function donebutton_Callback(source,eventdata)
m = zeros(1,N);
m(1:N) = str2double(htable.Data(1:N,2),'Data');
save('m.mat','m');
end
我想把第二列的内容放到m.mat中
【问题讨论】:
标签: matlab user-interface matlab-uitable