2017-03-25 1 views
2

이 코드가 작동하지 않는 이유를 알려주십시오.GUIDE 스크립트로 스펙트로 그램을 인쇄하십시오.

freq = 440; 
samples = 0:1/44100:1.4; 
x = sin(2*pi*freq*samples); 
axes(handles.uipanel1); 

spectrogram(x,'yaxis'); 

특정 UIpanel에서 스펙트로 그램을 인쇄하고 싶습니다.하지만이를 수행 할 수 없습니다. 이 코드는 별도의 .m 파일에서 잘 작동하지만 GUIDE 스크립트에서는 보이지 않습니다. 빈 표준 플롯 및 오류를 보여줍니다. "비 구조형 배열 객체에서 구조체 내용 참조."

또한 필자는이 스펙트로 그램을 독립적으로 인쇄하고 싶습니다. 어떤 종류의 단추가 아니라 시작부터 인쇄하는 것이 좋습니다. 어떤 종류의 uipanel1_Callback 또는 OpeningFcn에 할당해야합니까?

+0

당신은 실제 GUID를 표시 할 수 있습니다 전자 코드? – Suever

+0

@Suever 내 가이드는 거의 2000 줄의 코드이므로 제발, UIpanel1이 주된 하나 인 깨끗한 GUIDE 파일을 고려해보십시오 – codddeer123

+0

적어도 위의 코드를 포함하는 함수를 보여주십시오 – Suever

답변

3

spectrogram 함수는 3D 회전 도구에 핸들을 가져 오기 위해 그림 도구 모음이 표시 될 것으로 예상됩니다. 이 아니며 도구 이 실제로 존재하는지 확인하십시오.이 오류가 발생합니다.

hRotate = uigettool(ancestor(h,'Figure'),'Exploration.Rotate'); 
if strcmp(hRotate.State,'off') 

제 의견으로는, 이것은 MATLAB의 버그입니다.

옵션은 다음 중 하나에 있습니다

  1. 이 GUI에 표준 그림 도구 모음을 추가합니다. 당신은 spectrogram 찾을 수 있도록 OpeningFcn에 프로그래밍 방식으로이 작업을 수행 할 수 있습니다 그것은

    set(handles.hfig, 'Toolbar', 'figure') 
    

    또는 오른쪽 spectrogram를 호출하기 전에 도구 모음을 일시적으로 using GUIDE

  2. 회전 도구를 모방하는 도구를 추가를 추가하고 삭제할 수 있습니다 그것을 호출 한 후 spectrogram

    htoolbar = uitoolbar('Parent', ancestor(hObject, 'figure')); 
    uitoggletool('Parent', htoolbar, 'Tag', 'Exploration.Rotate', 'State', 'off'); 
    
    spectrogram(...) 
    
    % Delete the toolbar 
    delete(htoolbar) 
    
+0

감사합니다. MATLAB Central 및 스택에서 100 개가 넘는 링크를 검색했기 때문에 답변이 어딘가에 고정되어 있어야하며 임시 도구 상자의 필요성에 대한 단 한 단어도 없었습니다. 그것은 지금 매력처럼 작동합니다. 괜찮 으면, Matlab과 오디오 처리에 관한 내 친구의 게시물을 볼 수도 있습니까? https://stackoverflow.com/questions/43016646/consonance-superposition-of-recorded-sounds-in-matlab – codddeer123

관련 문제