Verfasst am: 09.07.2009, 08:44
Titel: Error while evaluating uicontrol Callback
hallo zusammen,
ich habe eine problem, bei dem ich mir die zähne ausgebissen habe.
ich rufe eine function über eine gui auf, danach erhalte ich folgende fehlermeldung:
Code:
??? Maximum variable size allowed by the functionis exceeded.
To request support for64-bit arrays in this function
please send this error to 64bit@mathworks.com
Error in ==> FTT_m at 88 [F, F_real, F_imag]=FTT(y_temp,Ts,F_init_real,F_init_imag,d_j);
Error in ==> Audioanalyse>ftt_berechnen_Callback at 171
FTT_m;
Error in ==> Audioanalyse at 22
gui_mainfcn(gui_State, varargin{:});
??? Error using ==> Audioanalyse('ftt_berechnen_Callback',gcbo,[],guidata(gcbo))
Maximum variable size allowed by the functionis exceeded.
To request support for64-bit arrays in this function
please send this error to 64bit@mathworks.com
ich rufe also aus meiner gui eine function auf, die selbst wieder eine function aufruft. die function in der fehlermeldung ist dann die letzte aufgerufene. es handelt sich um eine .mex32. die matrizen dafür sind bereits segmentiert und somit nicht zu groß, sonst würde ja auch nur ein memory problem als error meldung kommen.
das eigenartige ist, dass die function bestens funktioniert, wenn ich sie direkt über das command fenster aufrufe.
hat jemand eine idee, was ich hier falsch mache?
muß ich irgendwo das varargin anpassen?
hmm, nicht ganz einfach. Ein typisches Problem könnte die Verwechslung von Strings und Zahlen sein. Setze mal einen breakpoint auf die Zeile in FFT_m und schaue Dir die Variablen an. Sind das double-Werte? Sind das wirklich die Werte, mit denen Du von der Kommandozeile aus aufrufen kannst?
ich habe diese function bevor ich sie in meine gui eingebaut habe ausgiebig getestet. es sind alles double werte. als eingänge sind ein vektor, zwei scalare, zwei matrizen gewählt. als ausgang sind es drei matrizen.
ich habe an der übergabe zum programmteil FTT gegenüber der "command-fenster-version" nur soweit etwas geändert, dass ich in meiner gui nur mit gespeicherten .mat dateien arbeite, also nicht mit über an den workspace 'base'. ich rufe also sämtliche werte so auf:
das läuft in anderen beispielprogrammen auch einwandfrei. es kann auch nicht an der anzahl von variablen liegen, da ich eine function (auch .mex32) mit der gleichen anzahl aufrufe.
ich hoffe, dass du titus oder noch andere einen tipp haben.
du hast recht das load muß noch raus. aber es kommt sehr häufig vor leider (zu viel arbeit).
ich habe mein problem allerding gelöst:
ich habe die eingangsgröße y_temp als spaltenvektor übergeben, obwohl mein .mex32 einen zeilenvektor verlangt. naja in einer anderen function wird diese datei importiert und abgelegt. ich hatte es nicht auf dem schirm, dass sie dort gedreht wurde.
danke für die gedanken.
ich muß aber sagen, dass die error-meldung irgendwie nicht daraufhindeutete.
das ginge schon. doch ohne globale variablen oder zuweisung eines workspaces für die einzelnen variablen geht das leider nicht so einfach. da steckt die arbeit nicht im austauschen eines wortes. naja das abspeichern hat auch gewisse vorteile (projekt-aufrufe).
danke trotzdem
gruß thorsten
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.