2013-02-15 6 views
4

나는 사용자가 원하는 경우에만 입력을하고 싶습니다.Matlab에서 실행 중에 사용자 입력 받기

figure 
amplitude = 10; 
tic 
i = 1; 
while(1) 
    time = toc; 
    values(i) = amplitude*sin(time); 
    times(i) = time; 
    plot(times, values) 
    drawnow 
    i = i+1; 
end 

당신은 (절름발이 영화 등)을 지속적으로 음모를 꾸미고 사인파를 얻을 것이다 : 예를 들어이 코드가있는 경우. 내가하고 싶은 것은 사용자가 언제든지 웨이브의 진폭을 변경할 수 있도록 허용하는 것입니다. 즉 프로그램이 계속 실행되지만 사용자가 20Enter을 입력하면 진폭 변수가 변경되고 사인파가 동영상의 진폭을 변경합니다. 이것을 달성하는 방법에 대한 모든 포인터?

+0

일반적인 사람들은 질문에 잘 대답하고 좋은 코드 예제를 가지고 있습니다. 만약 당신이 그것을 upvote 다음 몇 가지 관심을 얻고 답변을 얻을 수 있습니다. –

+1

콘솔에 숫자를 입력하여이 작업을 수행 할 수는 없지만 간단한 GUI를 사용하여 수행 할 수 있습니다. google 검색을 수행 할 Matlab 콜백 – learnvst

+0

@learnvst 답변으로 추가하십시오! –

답변

1

이 언급 한 바와 같이 GUI를 함께 할 아마 가장 좋습니다,하지만 당신은 여기 콘솔에서 뭔가를하려면 내가 무엇을 제공 할 수 있습니다 :

주기적으로 입력 후 진폭을 사용자에게 요청하는 스크립트를 이 진폭으로 '영화'를 계속합니다. 사용자가 다음 진폭 변경을 입력 할시기를 결정할 수 있도록 쉽게 확장 할 수 있습니다.

clear 
amplitude = 10; 
i=1; 
while(1) 
    time = i/1000; 
    values(i) = amplitude*sin(time); 
    times(i) = time; 
    plot(times, values) 
    drawnow 
    i = i+1; 
    if mod(i,3141) == 0 
     keyboard 
    end 
end 

이제 잠시 실행 된 후 다음 진폭을 입력하라는 메시지가 표시됩니다. 실제로 여러 명령을 한 번에 지정할 수 있습니다.

amplitude = 20; return 
amplitude = 1; return 

이렇게하면 다음 진폭은 20이되고 그 다음은 1이됩니다. 위쪽 화살표 키는 여기에 친구입니다.

4

콘솔에 숫자를 입력하여이 작업을 수행 할 수는 없지만 간단한 GUI로 수행 할 수 있습니다. 예제를 찾으려면 Matlab 콜백에 대한 Google 검색을 수행하십시오. GUI 이벤트가 발생하면 루프의 변수를 수정하는 데 사용할 수있는 함수가 트리거됩니다.