MATLAB 在图形上添加 slider

标签 matlab

我有一个 576x576x150 矩阵。每个 576x576 集代表一个图像。当我想绘制一帧时,我使用绘图命令来完成:

figure(1);
imshow(B(:,:,45),[]) % plots frame 45
title('45') % tells frame number

但是我想在绘图中添加一个 slider ,这样我就可以在图中的 1-150 帧之间移动。我见过有人使用 uicontrol 的示例,但我不知道如何编写代码。除此之外,我想在图的顶部有一个标题,告诉我帧数。

最佳答案

这是我的做法。我喜欢保留一个函数来进行绘图,这样您就不会在其他地方重复使用命令。您可以将前两行替换为 function test(B) 以使用您自己的 B 矩阵。这段代码很容易扩展。您还需要根据自己的目的调整布局。

function test
B=rand(576,576,150);

fig=figure(100);
set(fig,'Name','Image','Toolbar','figure',...
    'NumberTitle','off')
% Create an axes to plot in
axes('Position',[.15 .05 .7 .9]);
% sliders for epsilon and lambda
slider1_handle=uicontrol(fig,'Style','slider','Max',150,'Min',1,...
    'Value',2,'SliderStep',[1/(150-1) 10/(150-1)],...
    'Units','normalized','Position',[.02 .02 .14 .05]);
uicontrol(fig,'Style','text','Units','normalized','Position',[.02 .07 .14 .04],...
    'String','Choose frame');
% Set up callbacks
vars=struct('slider1_handle',slider1_handle,'B',B);
set(slider1_handle,'Callback',{@slider1_callback,vars});
plotterfcn(vars)
% End of main file

% Callback subfunctions to support UI actions
function slider1_callback(~,~,vars)
    % Run slider1 which controls value of epsilon
    plotterfcn(vars)

function plotterfcn(vars)
    % Plots the image
    imshow(vars.B(:,:,get(vars.slider1_handle,'Value')));
    title(num2str(get(vars.slider1_handle,'Value')));

关于MATLAB 在图形上添加 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272559/

相关文章:

matlab - 为什么 matlab 中 max 的这两种实现不同?

python - 我正在尝试将我的 matlab 代码转换为 python 以获得自适应高斯求积

matlab - 无需 for 循环即可更改矩阵的多个元素(已知坐标)

python - 在 Windows 中安装 MATLAB 试用版时安装适用于 Python 的 matlab 引擎

Matlab 添加两个传递函数

matlab - 从电泳凝胶图像测量加权平均长度

Matlab - 加速嵌套 For 循环

matlab - 如何在 Matplotlib 的 3D 曲面图中获取垂直 Z 轴?

unix 命令行中类似 Matlab 的命令历史检索

c - C 中 system() 的问题