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


von Uwe (Gast)


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)

von Karl (Gast)


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.

von Fekal (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.