3

一度に1列ずつプロットするマトリックスがあります。MATLAB Figure にスライダーを追加して (重い GUI プログラミングなしで)、スライダーを動かすことで現在の軸に異なる列が表示されるようにすることはできますか?

4

2 に答える 2

4

スライダーを作成するコードは合理的に最小限です。

uicontrol('Style', 'slider', 'Callback', @sliderCallback);

function sliderCallback(hObject, evt)
    fprintf('Slider value is: %d\n', get(hObject, 'Value') );
end

などのプロパティを調べてPosition、Figure 上の位置MaxMin設定し、可能な値の範囲を設定します。また、関数内でこれを行うsliderCallbackと、ネストされた関数になる可能性があることに注意してください。これにより、おそらくディスプレイの再描画が容易になります。これをスクリプトで実行する場合sliderCallbackは、別のファイルにする必要があります。

于 2013-04-12T16:50:15.810 に答える
3

対応する列をプロットするスライダーのコードは次のとおりです。

m = ones(5,1)*(1:5);
slmin = 1;
slmax = size(m,2);
plot(m(:,1))
hsl = uicontrol('Style','slider','Min',slmin,'Max',slmax,...
                'SliderStep',[1 1]./(slmax-slmin),'Value',1,...
                'Position',[20 20 200 20]);
set(hsl,'Callback',@(hObject,eventdata) plot(m(:,round(get(hObject,'Value')))) )

編集

パフォーマンスを向上させるには、YData値を更新するだけです。

set(hsl,'Callback',@(hObject,eventdata) ...
    set(hline,'YData',m(:,round(get(hObject,'Value')))) )

y 軸の制限を修正するにはylim([0 6])、最初のplot呼び出し後に手動で設定するだけです。

于 2013-04-12T17:21:21.487 に答える