1 van 1

Array vullen met character string in matlab

Geplaatst: do 01 sep 2011, 09:57
door Wouter_Masselink
Ik wil een array maken en deze vullen met telkens dezelfde character string, bijvoorbeeld 'wildtype'.

Hiervoor meet ik de rijen van een eerdere array en maak aan de hand hiervan een nieuwe array. Nu kan ik deze vullen met '0', 'NaN' of '1', maar ik kom er maar ik krijg er maar geen duidelijkheid in hoe ik 'm moet vullen met een eigen character string.

de code zoals ik 'm nu heb

Code: Selecteer alles

[rows1,cols] = size(DataV1 {1,1}(:,1));

rows1;

wildtype_group = zeros([rows1,1])
dit geeft een array met de naam wildtype_group gevuld met nullen, hij moet echter gevuld zijn met de character string 'wildtype'. Nu heb ik al zitten kijken naar de functie 'changem' maar deze lijkt specifiek voor values te werken en niet voor character strings. Heeft iemand hier een oplossing voor?

Re: Array vullen met character string in matlab

Geplaatst: do 01 sep 2011, 10:17
door Bart

Code: Selecteer alles

wildtype_group = repmat('wildtype', rows1, 1);
Als je strings van verschillende lengte gaat gebruiken, zul je een cell array moeten gebruiken. Feitelijk is bovenstaand een array van karakters.

Code: Selecteer alles

 disp(wildtype_group(2, 2));

> i

Re: Array vullen met character string in matlab

Geplaatst: do 01 sep 2011, 10:59
door Wouter_Masselink
Daar kan ik jammer genoeg vrij weinig mee aangezien ik het volgende wil doen

Code: Selecteer alles

% Create groups in collumns

[rows1,cols] = size(DataV1 {1,1}(:,1));

rows1;

wildtype_group = zeros([rows1,1]);

wildtype_group = repmat('wildtype', rows1, 1)

[rows2,cols] =size(DataV2 {1,1}(:,1));

rows2

mutant_group =

mutant_group = zeros([rows2,1])

mutant_group = repmat('mutant', rows1, 1)

groups = vertcat(wildtype_group, mutant_group)
hoe kan ik dit aanpassen om hier een cellarray van te maken?

Re: Array vullen met character string in matlab

Geplaatst: do 01 sep 2011, 12:08
door Xenion
Heb je dit al bekeken? http://www.mathworks.nl/help/techdoc/ref/strings.html

Als je een probleem met de pre-allocatie hebt kan je dit eens doornemen: http://www.mathworks.com/matlabcentral/new...w_thread/292183

Blijkbaar geeft dat bij strings vreemde resultaten, maar er zijn wel oplossingen voor.

Re: Array vullen met character string in matlab

Geplaatst: do 01 sep 2011, 14:03
door Bart
Het is me geheel niet duidelijk wat je er mee wilt, maar goed

Met cell array:

Code: Selecteer alles

a(1:row1, 1) = {'hello'};

b(1:row2, 1) = {'hi'};

c = [a; b];
of

Code: Selecteer alles

n = row1 + row2;

c = cell(n, 1);

c(1:row1, 1) = {'hello'};

c(row1 + (1:row2), 1) = {'hi'};

Re: Array vullen met character string in matlab

Geplaatst: do 01 sep 2011, 14:59
door Wouter_Masselink
Wat ik er mee wil is een code in elkaar draaien die me een one-way MANOVA laat doen.

Zoals ik het heb begrepen is de structuur die nodig is voor een MANOVA er eentje waarbij je per kollom alle waarnemingen van 1 parameter zet. Vervolgens heb je nog een extra kollom waarin je aangeeft welke data afkomstig is van welke groep.

In mijn geval is DataV1 afkomstig van wildtype en DataV2 van mutanten. Door te tellen hoeveel waarnemingen er in elke groep zitten is het dus mogelijk om automatisch een extra kollom in elkaar te draaien die hiermee aangeeft welke data afkomstig is van welke groep.