2017-03-25 3 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を表示することができますEコード? – Suever

+0

@Suever私のGUIDEはほぼ2000行のコードですので、UIpanel1が主なものであるクリーンなGUIDEファイルを考えてみてください – codddeer123

+0

少なくともコードを含む関数を表示してください – Suever

答えて

3

spectrogram関数は、図形ツールバーが3D回転ツールのハンドルを取得しようとしているために表示されることを期待しています。 はありませんが実際に存在するかどうかを確認してくださいこれはあなたのエラーを引き起こしています。

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

私の意見では、これはMATLABのバグです。

あなたのオプションのいずれかにある:

  1. があなたのGUIに標準のFigureツールバーを追加します。 spectrogram

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

    それとも、一時的に右spectrogramを呼び出す前に、回転ツールを模倣するツールを追加してから削除ツールバーusing GUIDE

  2. を追加することができ、それを見つけることができるようにあなたのOpeningFcnのいずれかで、プログラムでこれを行うことができますそれは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

関連する問題