www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Variablenübergabe bei Matlab (GUI)


Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
 ich habe folgendes Problem. Ich habe bei Matlab Gui ein Wert aus der 
Slider -Funktion, welcher in die Pushbutton-Funktion übergeben werden 
soll.

function slider9_Callback(hObject, eventdata, handles)
% hObject    handle to slider9 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of 
slider
global G9
G9=get(hObject,'Value');
if G9==0 % Worste Case für die Biquadformel, sprich Teilung durch 0.
    G9=0.1;
end
set ( handles.edit9, 'String', num2str ( G9 ) );
f9=15100;
df9=9720;

[b9,a9]=Koeff_berechnung(G9,f9,df9);
[H9,w9]=freqz(b9,a9,10000);

global H9;
global w9;

der Wert H9 wird in der Push-button-funktion benötigt.

function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global H;

Hges=H.*H2.*H3.*H4.*H5.*H6.*H7.*H8.*H9; % Gesamtspektrum Hges für den 
Plot
semilogx((w/pi)*(fs/2),20*log10(abs(Hges)),'LineWidth',2.0); axis([10, 
25000, -18, 18]);
xlabel('Frequenz [Hz]'); ylabel('Amplitude [dB]'); grid;

Leider erzählt mir Matlab immer das gleiche:
Undefined function or variable 'H9'
mit den anderen H's das gleiche Problem. Mit Global H9 funktioniert es 
nicht. Wer weiss, wie ich diese Variable übergeben kann.

(Für die, die jetzt meckern das dieser Beitrag hier nicht rein passt, 
tut es mir sehr leid. Is aber das einzige Forum wo man gute Antworten 
bekommt)

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss man globale Variablen nicht vor der Verwendung deklariert haben? 
Schau nochmal in die Hilfe dazu.

Abgesehen davon sind globale Variablen unschön, da fehleranfällig. Du 
hast doch die "handles" Struktur und kannst auf den Slider aus dem 
PB-callback zugreifen. Wenn dir das nicht gefällt, nimm eine "appdata" 
Struktur.

Autor: Fekal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die embedded matlab function macht die Variablen, die in einzelnen 
callbacks vorkommen nicht allgemein bekannt. Das musst du erledigen.

Oben in der Deklarierung
also in
function name_deiner_Gui (hObject,...
kannst du mit
z.B.:
handles.das_zu_bekanntmachende=hObject; %deklarieren
handles.das_zu_bekanntmachende=0; % erst mal einen wert festlegen, dass 
kein Unsinn drinsteht


Gruß
Fekal

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.