MATLAB 버전 2015에서 MovStr 기능 업데이트에 대한 도움이 필요합니다. 전에 MATLAB Function 2013을 사용하고있었습니다. 아래에 주어진 기능이 나를 위해 작동하지 않습니다. 어떻게하면 효과가 있습니까? 감사합니다MovStr 기능 업데이트 (MATLAB 2015 버전)
function MoveStr(ws)
% ws: with of a blank character
p1 = get(gca,'CurrentPoint');
set(gcf,'Pointer','fleur')
set(gcf,'WindowButtonUpFcn', sprintf('MoveStrUp(%1.20g,%1.8g,%1.8g,%1.8g)',gcbo,p1(1,1),p1(1,2),ws))
set(gcf,'WindowButtonMotionFcn',sprintf('MoveStrMo(%1.20g,%1.8g,%1.8g)',gcbo,p1(1,1),p1(1,2)))
% alle Textobjekte mitbewegen
ch = [gcbo get(gcbo,'UserData')];
for i = 1:length(ch)
if strcmpi(get(ch(i),'Type'),'text')
set(ch(i),'Selected','on')
end
end
function MoveStrMo(obj,x,y)
%set(gcf,'WindowButtonMotionFcn','')
d_pos = get(gca,'CurrentPoint');
set(gcf,'WindowButtonMotionFcn',sprintf('MoveStrMo(%20.15f,%f,%f)',obj,d_pos(1,1),d_pos(1,2)))
%set(gcf, 'WindowButtonMotionFcn', @(s,e)MoveStrMo(obj,d_pos(1,1),d_pos(1,2)));
d_pos = [d_pos(1,1)-x,d_pos(1,2)-y 0];
ch = [obj get(obj,'UserData')];
for i = 1:length(ch)
if isgraphics(ch(i),'text')
pos = get(ch(i),'Position');
set(ch(i),'Position',[pos(1) pos(2) 2] + d_pos)
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MATLAB의 이전 버전에서 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function MovePointer
ans = get(gcbo,'UserData');
if strcmpi(get(ans(1),'Type'),'string')
% if isgraphics (ans1(1), 'string')
ans = ans(2);
end
set(gcf,'Pointer','fleur')
% set(gcf,'WindowButtonUpFcn',sprintf('MovePointerUp(%20.15f,%20.15f)',gcbo,ans(1)))
% set(gcf,'WindowButtonMotionFcn',sprintf('MovePointerMo(%20.15f,%20.15f)',gcbo,ans(1)))
set(gcf,'WindowButtonUpFcn',sprintf('MovePointerUp(%20.15f,%20.15f)',double(gcbo),ans(1)))
set(gcf,'WindowButtonMotionFcn',sprintf('MovePointerMo(%20.15f,%20.15f)',double(gcbo),ans(1)))
% set(gcf, 'WindowButtonUpFcn', @(s,e)MoveStrUp(gcbo, ans(1)));
% set(gcf, 'WindowButtonMotionFcn', @(s,e)MoveStrMo(gcbo, ans(1)));
set(gcbo,'Selected','on')
이 코드는 2013 버전에서 작동합니까? 여기서 "작동하지 않는"것은 무엇을 의미합니까? 오류가 있습니까? 기대하는 행동과 실제 행동을 기술하십시오. – YakovL
안녕 Yakovl. Move Str 함수를 사용했고이 코드는 2013 버전에서 작동했습니다. 그러나 이제 MATLAB 버전 2015에서 일부 수정이 발생했으며 더 이상 "sprintf"를 사용할 수 없습니다. – KHAN6691
MATLAB에서는 그래픽 개체 배열에 숫자 값을 추가 할 수 없습니다. MATLAB에서 숫자 값을 예상하는 함수에서 개체 핸들을 사용하려고해도 비슷한 문제가 발생합니다. 이것의 간단한 예제는 sprintf 함수에서 발생합니다. – KHAN6691