Gebruikersavatar
Wouter_Masselink
Artikelen: 0
Berichten: 8.560
Lid geworden op: ma 13 okt 2003, 09:54

Re: Csv file importeren in matlab

Deze functie geeft me nog wel een klein probleempje, namelijk dat ik deze functie na het uitvoeren van het eerdere script telkens opnieuw moet laden in het figuur. Als iemand een manier weet om automatisch na het uitvoeren van het vorige script automatisch deze functie op het geproduceerde figuur uit te voeren dan houdt ik me aanbevolen. Simpelweg de code van deze functie bij in de m file van de andere functie te gooien werkt ook niet. Alternatief

Code: Selecteer alles

load('Callback2Dplot.m')
geeft ook een error.

Code: Selecteer alles

??? Error using ==> load

Number of columns on line 1 of ASCII file /Users/wmasseli/Documents/MATLAB/Callback2Dplot.m

must be the same as previous lines.

Error in ==> test at 44

load('Callback2Dplot.m')
Naast deze issues heb ik ook nog succes geboekt, zo is onder andere het laden van de data voor de X-as en Y-as niet meer afhankelijk van het handmatig aanpassen van de pathname, filename en extensie maar wordt dit gedaan door gebruik te maken van uigetfile. Hierdoor kan ik de file voor de X-as en de file voor de Y-as selecteren uit een GUI. Deze automatisering probeer ik door te zetten naar de labeling van de assen. Nu moet ik nog telkens handmatig de xlabel, ylabel en title aanpassen. Liever zou ik zien dat de naam voor de xlabel automatisch uit de Headers en Data wordt getrokken, hetzelfde voor de ylabel. De title hoeft vervolgens dan niet meer te zijn dan xlabel vs. ylabel.

Hier heb ik ook een poging aan gewaagd met gemengd resultaat.

Nu kan ik bijvoorbeeld zeggen

Code: Selecteer alles

xlabel(HeadersX{1,1},'FontSize', 16)
dit zou alleen de informatie in Kolom 1 van Rij 1 van HeadersX moeten geven. Ik krijg echter meer informatie op m'n as te staan. Afgaande op de output lijkt het alsof

Code: Selecteer alles

HeadersX{;,1)
wordt weergegeven. Als ik dan ook nog de bijbehorende grootheden probeer toe te voegen uit DataX dan gaat het helemaal verkeerd.

Code: Selecteer alles

xlabel(HeadersX{1,1};DataX{1,2},'FontSize',16)

Code: Selecteer alles

??? Error: File: test.m Line: 35 Column: 21

Unbalanced or unexpected parenthesis or bracket.
Line: 35 refereert aan de eerder genoemde xlabel.

Als ik kijk naar de output voor

Code: Selecteer alles

DataX{1,2}
kijk dan lijkt hetzelfde probleem als bij HeadersX{1,1} zich voor te doen. De output lijkt de hele kolom2 te tonen in plaats van alleen rij1.

Als iemand hier een oplossing voor weet dan houdt ik me aanbevolen.
"Meep meep meep." Beaker
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Csv file importeren in matlab

Naast deze issues heb ik ook nog succes geboekt, zo is onder andere het laden van de data voor de X-as en Y-as niet meer afhankelijk van het handmatig aanpassen van de pathname, filename en extensie maar wordt dit gedaan door gebruik te maken van uigetfile. Hierdoor kan ik de file voor de X-as en de file voor de Y-as selecteren uit een GUI. Deze automatisering probeer ik door te zetten naar de labeling van de assen. Nu moet ik nog telkens handmatig de xlabel, ylabel en title aanpassen. Liever zou ik zien dat de naam voor de xlabel automatisch uit de Headers en Data wordt getrokken, hetzelfde voor de ylabel. De title hoeft vervolgens dan niet meer te zijn dan xlabel vs. ylabel.

Hier heb ik ook een poging aan gewaagd met gemengd resultaat.

Nu kan ik bijvoorbeeld zeggen

Code: Selecteer alles

xlabel(HeadersX{1,1},'FontSize', 16)
dit zou alleen de informatie in Kolom 1 van Rij 1 van HeadersX moeten geven. Ik krijg echter meer informatie op m'n as te staan. Afgaande op de output lijkt het alsof

Code: Selecteer alles

HeadersX{;,1)
wordt weergegeven.
Lijkt erop dat HeadersX een dubbele cell array is. Dus HeadersX{1, 1} bevat weer een cell array. Tik eens in de command window HeadersX{1, 1} in en kijk wat de uitkomst is.
Als ik dan ook nog de bijbehorende grootheden probeer toe te voegen uit DataX dan gaat het helemaal verkeerd.

Code: Selecteer alles

xlabel(HeadersX{1,1};DataX{1,2},'FontSize',16)

Code: Selecteer alles

??? Error: File: test.m Line: 35 Column: 21

Unbalanced or unexpected parenthesis or bracket.
Line: 35 refereert aan de eerder genoemde xlabel.

Als ik kijk naar de output voor

Code: Selecteer alles

DataX{1,2}
kijk dan lijkt hetzelfde probleem als bij HeadersX{1,1} zich voor te doen. De output lijkt de hele kolom2 te tonen in plaats van alleen rij1.
Hiervoor geld hetzelfde als bovenstaande. DataX{2} bevat denk ik een array.

Daarnaast, een ';' alleen kun je niet gebruiken voor concetenation. Gebruik

Code: Selecteer alles

s1 = 'Hoi';

s2 = 'Wouter';

s = [s1, ' ', s2];

% alternatief

s = sprintf('%s %s', s1, s2);
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
Wouter_Masselink
Artikelen: 0
Berichten: 8.560
Lid geworden op: ma 13 okt 2003, 09:54

Re: Csv file importeren in matlab

Het is inderdaad een dubbele cellarray, ben ik ook net achter gekomen.

Code: Selecteer alles

xlabel(HeadersX{1,1}(1,1),'FontSize',16)
geeft het juiste label weer. Als ik dan ook de juiste concetenation gebruik eindig ik met de volgende code

Code: Selecteer alles

% Create xlabel 

s1 = HeadersX{1,1}(1,1);

s2 = DataX{1,2}(1,1);

s = [s1,s2];

xlabel(s,'FontSize',16);



% Create ylabel

t1 = HeadersY{1,1}(1,1);

t2 = DataY{1,2}(1,1);

t = [t1,t2];

ylabel(t,'FontSize',16);



% Create title

title([s,t],'FontSize',20);


in 1 woord schitterend!
"Meep meep meep." Beaker
Gebruikersavatar
DePurpereWolf
Artikelen: 0
Berichten: 9.240
Lid geworden op: wo 12 mar 2003, 19:44

Re: Csv file importeren in matlab

Ik heb dit onderwerp proberen te volgen maar ik weet nog steeds niet wat je nu precies wilde.

Zou je PrtScn van je grafiek kunnen plaatsen Wouter zodat we weten waarvoor het allemaal was?
Gebruikersavatar
Wouter_Masselink
Artikelen: 0
Berichten: 8.560
Lid geworden op: ma 13 okt 2003, 09:54

Re: Csv file importeren in matlab

Maar natuurlijk. Met dit als basis heb ik de mogelijkheid om output data van Imaris direct in een plot te verwerken. Simpelweg selecteer ik een csv file die ik voor de X as wil gebruiken en hetzelfde voor de Y as (en indien 3D hetzelfde voor de Z as). Druk op enter en de plot is gemaakt waarbij de centroid ook automatisch is aangegeven.
example
example 451 keer bekeken
Nu wil ik nog kijken dat ik meerdere verschillende datasets in dezelfde grafiek kan verwerken door middel van een when-loop constructie. Ook zal ik nog proberen om via individuele plots voor elk tijdspunt korte filmpjes te kunnen maken.
"Meep meep meep." Beaker
Gebruikersavatar
DePurpereWolf
Artikelen: 0
Berichten: 9.240
Lid geworden op: wo 12 mar 2003, 19:44

Re: Csv file importeren in matlab

Misschien een beetje mosterd na de maaltijd, maar als ik vele grafieken wil vergelijken exporteer ik gewoon een heleboel grafieken (via Matlab lekker automatisch) en dan blader ik in winxp image 'preview' er gewoon doorheen. Ook kun je het in powerpoint importeren om er dan doorheen te bladeren. Blader snel genoeg en het lijkt op een film.

Ik denk dat mijn punt is dat het niet altijd een goed idee is om grafieken gecompliceerd te maken, ook al kun je het in een oogopslag zien, is het moeilijk aan andere mensen uit te leggen waar ze nu eigenlijk naar aan het kijken zijn.
Gebruikersavatar
Wouter_Masselink
Artikelen: 0
Berichten: 8.560
Lid geworden op: ma 13 okt 2003, 09:54

Re: Csv file importeren in matlab

Ik probeer m'n grafieken ook niet onnodig moeilijk te maken. Het is voor mij de meest eenvoudige en heldere manier om iets zinnigs uit deze hele batterij aan parameters te halen. Doordat ik te maken heb met een 3D beweging door de tijd van meerdere objecten en hierover iets zinnigs probeer te zeggen heb ik in principe met 4 dimensies te maken. Dit is op een computerscherm al lastig weer te geven maar zal op papier of bij een presentatie nog lastiger zijn. Daarom ben ik nu dus bezig om de richting van de beweging te laten voor wat het is en voor elk object het gemiddelde gedrag (snelheid, acceleratie, afstand, verplaatsing etc.) te plotten. De volgende uitdaging is om dit gedrag over tijd te plotten om zelf te kunnen zien of er significante verschillen zijn die zich over de tijd voor doen. Of dit ook de eenvoudigste manier is om de informatie daadwerkelijk te presenteren valt nog te bezien en zal afhankelijk zijn van de resultaten.
"Meep meep meep." Beaker
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Csv file importeren in matlab

Je kunt ook 3D filmpjes in matlab maken. Maak je op een conferentie wel de blits mee!
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
Wouter_Masselink
Artikelen: 0
Berichten: 8.560
Lid geworden op: ma 13 okt 2003, 09:54

Re: Csv file importeren in matlab

Zeker, ik betwijfel echter of dit de informatie ook overzichtelijk en helder houdt. Verder als ik een filmpje maak dan wil ik de snelheid van het object op een as zetten en op de andere as de directheid (straightness). Zelfs al zou ik een derde as toevoegen dan weet ik niet wat hier nog aan zinnige informatie op kan worden gezet puur en alleen betreffende migratie.

Eventueel zou er een kwantificeerbare eigenschap van de bewegende objecten op kunnen worden gezet. Tot nu toe heb ik geen idee welke eigenschap dit zou moeten zijn.
"Meep meep meep." Beaker

Terug naar “Informatica en programmeren”