我正试图在matlab中创建一个uitable。考虑以下简单示例:
f = figure;
data = rand(3);
colnames = {'X-Data', 'Y-Data', 'Z-Data'};
t = uitable(f, 'Data', data, 'ColumnName', colnames, ...
'Position', [20 20 260 100]);
接下来,我尝试设置uitable的宽度和高度,以匹配封闭矩形的大小:
t.Position(3) = t.Extent(3);
t.Position(4) = t.Extent(4);
然而,我得到以下错误:
>> t.Position(3) = t.Extent(3);
t.Position(4) = t.Extent(4);
Attempt to reference field of non-structure array.
当我试图查看t
是什么时,我得到:
>> t
t =
2.1030e+03
我不知道这个结果意味着什么!我有点困惑,因为这是我第一次使用uitable
,而且我对MATLAB也很陌生。
根据注释,将我上面的注释转换为答案。
要使示例代码正常工作,您需要MATlAB R2014b或更新版本。根据MATLAB R2014b的发行说明,图形句柄现在是对象,而不是双重对象,使图形对象与MATLAB的其他对象保持一致。这样做的一个好处是,用户现在可以利用点表示法来寻址和设置图形对象的属性。这与旧版本有所不同,在旧版本中,图形句柄存储为指向相关图形对象的数字ID,要求用户使用get
和set
来访问和修改图形对象属性。
要解决您的问题,您只需要修改点符号的用法,即可在适当的地方获取或设置。或者升级MATLAB:)
例如,
t.Position(3) = t.Extent(3);
t.Position(4) = t.Extent(4);
变为:
tableextent = get(t,'Extent');
oldposition = get(t,'Position');
newposition = [oldposition(1) oldposition(2) tableextent(3) tableextent(4)];
set(t, 'Position', newposition);