一度に1列ずつプロットするマトリックスがあります。MATLAB Figure にスライダーを追加して (重い GUI プログラミングなしで)、スライダーを動かすことで現在の軸に異なる列が表示されるようにすることはできますか?
質問する
27080 次
2 に答える
4
スライダーを作成するコードは合理的に最小限です。
uicontrol('Style', 'slider', 'Callback', @sliderCallback);
function sliderCallback(hObject, evt)
fprintf('Slider value is: %d\n', get(hObject, 'Value') );
end
などのプロパティを調べてPosition
、Figure 上の位置Max
をMin
設定し、可能な値の範囲を設定します。また、関数内でこれを行う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 に答える