带有滑块的imagesc的Matlab实时更新
Matlab realtime updating of imagesc with a slider
我有一个 3D 矩阵,我想将其以图形方式查看为要显示的彩色地图。如果我的 3D 矩阵是 (x,y,z) 形式,我希望颜色图显示 (y,z) 2D 矩阵,并且我希望有一个额外的滑块来调整 (x) 坐标。我正在用 imagesc 实现这个。
看了一些例子,这是我写的代码
ct = 1000;
sys = squeeze(T(ct,:,:));
f = figure;
h = imagesc(sys);
b = uicontrol('Parent',f,'Style','slider','Position',[81,54,419,23],...
'value',ct, 'min',1, 'max',total_time);
b.Callback = @(es,ed) updateSystem(h,squeeze(T(es.Value,:,:)));
但是,在 运行 代码之后我得到以下错误。
Subscript indices must either be real positive integers or logicals.
Error in filament_simulation>@(es,ed) updateSystem(h,squeeze(T(es.Value,:,:)))
Error while evaluating UIControl Callback
这可能是因为我不太了解'updateSystem',但我很惊讶地看到错误是由于无效索引造成的,那会在哪里?
我非常感谢对此提供一些帮助。提前致谢。
滑块可能有一个非整数值。在将其用作索引之前,您需要对其进行舍入
updateSystem(h, squeeze(T(round(es.Value), :, :)))
与其尝试使用 updateSystem
(控制系统工具箱函数),您可以使用以下回调来更新图像数据。
b.Callback = @(es, ed)set(h, 'CData', squeeze(T(round(es.Value), :, :)));
我有一个 3D 矩阵,我想将其以图形方式查看为要显示的彩色地图。如果我的 3D 矩阵是 (x,y,z) 形式,我希望颜色图显示 (y,z) 2D 矩阵,并且我希望有一个额外的滑块来调整 (x) 坐标。我正在用 imagesc 实现这个。
看了一些例子,这是我写的代码
ct = 1000;
sys = squeeze(T(ct,:,:));
f = figure;
h = imagesc(sys);
b = uicontrol('Parent',f,'Style','slider','Position',[81,54,419,23],...
'value',ct, 'min',1, 'max',total_time);
b.Callback = @(es,ed) updateSystem(h,squeeze(T(es.Value,:,:)));
但是,在 运行 代码之后我得到以下错误。
Subscript indices must either be real positive integers or logicals.
Error in filament_simulation>@(es,ed) updateSystem(h,squeeze(T(es.Value,:,:)))
Error while evaluating UIControl Callback
这可能是因为我不太了解'updateSystem',但我很惊讶地看到错误是由于无效索引造成的,那会在哪里?
我非常感谢对此提供一些帮助。提前致谢。
滑块可能有一个非整数值。在将其用作索引之前,您需要对其进行舍入
updateSystem(h, squeeze(T(round(es.Value), :, :)))
与其尝试使用 updateSystem
(控制系统工具箱函数),您可以使用以下回调来更新图像数据。
b.Callback = @(es, ed)set(h, 'CData', squeeze(T(round(es.Value), :, :)));