1 van 1

Matlab boxplot

Geplaatst: ma 26 sep 2011, 10:02
door Wouter_Masselink
Ik ben bezig om een m-file te schrijven om een boxplot uit te voeren. Hiervoor heb ik twee datasets (wildtype en mutant) waarbij elke in een .csv file zitten verpakt.

Ik lees de CSV file in en specificeer waar in de file de relevante data staat. Echter als ik de plot will runnen dan krijg ik de volgende foutmelding

Code: Selecteer alles

??? Error using ==> boxplot

Too many input arguments.
De code die ik gebruik is

Code: Selecteer alles

function boxplots

h=gcf

close(h)

% Import wildtype track speed

[filename,pathname,index]=uigetfile('*.csv','select wildtype data file','/Users/wmasseli/Desktop/microscopy data');

fid1=fopen(strcat(pathname,filename));

% Import speed file

[filename,pathname,index]=uigetfile('*.csv','select mutant data file','/Users/wmasseli/Desktop/microscopy data');

fid2=fopen(strcat(pathname,filename));

% Read 3 header lines

HeadersX = textscan(fid1, repmat('%s', 1, 4), 3, 'Delimiter', ',')

% Read body

DataX = textscan (fid1, '%f%s%s%d', 'Delimiter', ',')

%Close file

fid1 = fclose(fid1);

% Read 3 header lines

HeadersY = textscan(fid2, repmat('%s', 1, 4), 3, 'Delimiter', ',')

% Read body

DataY = textscan (fid2, '%f%s%s%d', 'Delimiter', ',')

%Close file

fid2= fclose(fid2);

X = DataX {:,1};

Y = DataY {:,1};

boxplot([X,Y], 'notch', 'on')

% Create xlabel 

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

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

s = [s1,s2];

xlabel(s,'FontSize',16);

% Create title

title('boxplot comparison','FontSize',20);

end
Ik kan er maar niet achter komen waar dit overschot aan input argumenten vandaan komt. Als iemand een idee heeft dan zou ik dat graag horen.

Voor de volledigheid, de .csv files hebben de volgende lay-out

Code: Selecteer alles

Track Duration

 ==================== 

Value,Unit,Category,ID,

54.000,s,Track,1000000000,

47.000,s,Track,1000000001,

44.000,s,Track,1000000002,

43.000,s,Track,1000000003,

3.000,s,Track,1000000004,

35.000,s,Track,1000000005,

29.000,s,Track,1000000006,

27.000,s,Track,1000000007,

27.000,s,Track,1000000008,

25.000,s,Track,1000000009,

Re: Matlab boxplot

Geplaatst: ma 26 sep 2011, 10:33
door Xenion
Wouter_Masselink schreef:...

boxplot([X,Y], 'notch', 'on')

...
Heb je al eens geprobeerd van gewoon X, Y te schrijven zonder de [ ] rond?

Als het dat niet is dan weet ik het ook niet.

Re: Matlab boxplot

Geplaatst: ma 26 sep 2011, 10:36
door DePurpereWolf
Ik vraag me af of dit weer een probleem is met string en double.

Kun je X = DataX {:,1};

als X = DataX(:,1); defineren?

Re: Matlab boxplot

Geplaatst: ma 26 sep 2011, 10:49
door Bart
DePurpereWolf schreef:Ik vraag me af of dit weer een probleem is met string en double.

Kun je X = DataX {:,1};

als X = DataX(:,1); defineren?
In het eerste geval wordt X een array, in het tweede geval een cell-array. Het tweede is niet toegestaan in (box)plot commando's.

Wat voor data bevat X en Y?

Re: Matlab boxplot

Geplaatst: ma 26 sep 2011, 16:54
door Wouter_Masselink
Deze bevatten beide doubles.

Re: Matlab boxplot

Geplaatst: ma 26 sep 2011, 20:24
door Bart

Code: Selecteer alles

x = [1 2 3 4 5]';

y = [ 2 4 5 4 3]';

boxplot([x, y], 'notch', 'on');


werkt gewoon bij mij.

Re: Matlab boxplot

Geplaatst: di 27 sep 2011, 03:42
door Wouter_Masselink
En exact die code doet het bij mij niet.

EDIT: en ik ben er ook achter waarom niet. Ik had een m-file geschreven welke gesaved was met de naam 'boxplot'. Hierdoor verwees boxplot niet meer naar de ingebakken functie maar naar de m-file.