Archief - Matlab GUIDE vraagje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Tristan

Legacy Member
Hey iedereen,

Ik ben wat aan het experimenteren met GUI's in matlab. Beetje bij beetje
ontdek ik hoe alles in elkaar zit, maar ik heb nu toch een, stom waarschijnlijk, probleem in mijn code.

Ik heb in mijn .m file van mij GUI, twee functies staan. De ene functie steekt een bepaalde waar de in een lokale? variabele. Diezelfde variabele wil ik echter verder verwerken in een tweede functie.

Ik heb die variabele al gedeclareerd als GLOBAL in de eerste functie, maar dat werkt alleszins ook niet. Hoe zorg ik dan wel dat die tweede functie over die variabelen beschikt?

Many kudos!

Fraggie

Legacy Member
Als je dan toch al werkt met GUI's kan je dan niet direct overschakelen naar een object georiënteerde manier van werken?

Toch raad ik af om iets anders te doen dan uitwerken van algoritmes met MATLAB, omdat het daar echt niet performant genoeg voor is. Wil je toch met GUI's werken dan kan je beter met Python + NumPy + Qt/Wx werken impo.

Tristan

Legacy Member
De GUI dient gewoon om wat metingen (FFT's) wat beter te organizeren dan het runnen van aparte scriptjes... That's all :)

EDIT: Eigenlijk heeft die GUI er niks mee te maken, het is pure code in de .m file :)

Tristan

Legacy Member
Gevonden denk ik... Blijkbaar moet je alle variabelen die je globaal wilt gebruiken laten voorafgaan door 'handles.', bijvoorbeeld 'handles.data' .

Ik neem aan dat dit de correcte methode is?

Fraggie

Legacy Member
Waarom kan je de variabel niet mee geven als parameter aan de tweede functie? Maar sowieso zijn globale variabelen iets om te vermeiden.

Een voorbeeld met global:

Runner.m
Code:
clc;
clear;
x = 5;

ftionOne();
ftionTwo();

ftionOne.m
Code:
function ftionOne()
    global x;
    disp(x);
end

ftionTwo.m
Code:
function ftionTwo()
    global x;
    disp(x);
end

Geeft als resultaat:
Code:
5

5

Tristan

Legacy Member
Bedankt voor je hulp in elk geval Fraggie :)

Ik neem aan dat je je scriptjes runt vanuit de command window van matlab? Dan komen je variabelen in je workspace & kun je ze met elk script lezen & bewerken.

Echter mijn functie ( hetgeen die achter de GUI ) draait, komen er geen variabelen in die workspace...

Fraggie

Legacy Member
Tristan zei:
Bedankt voor je hulp in elk geval Fraggie :)

Ik neem aan dat je je scriptjes runt vanuit de command window van matlab? Dan komen je variabelen in je workspace & kun je ze met elk script lezen & bewerken.

Echter mijn functie ( hetgeen die achter de GUI ) draait, komen er geen variabelen in die workspace...
Klopt, maar misschien volstaat het om een wrapper-file te schrijven die de geheugen ruimte toewijst?

Kan je anders die code eens sharen: uploaden naar een fileshare server of pastbin a.u.b.? Want ik ben eens benieuwd hoe het dan juist in elkaar zit.

Tristan

Legacy Member
Fraggie zei:
Klopt, maar misschien volstaat het om een wrapper-file te schrijven die de geheugen ruimte toewijst?

Kan je anders die code eens sharen: uploaden naar een fileshare server of pastbin a.u.b.? Want ik ben eens benieuwd hoe het dan juist in elkaar zit.
Met veel plezier, ik stuur je straks een PM :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan