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

Array vullen met character string in matlab

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?
"Meep meep meep." Beaker
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Array vullen met character string in matlab

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
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: Array vullen met character string in matlab

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?
"Meep meep meep." Beaker
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Array vullen met character string in matlab

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.
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Array vullen met character string in matlab

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'};
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: Array vullen met character string in matlab

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.
"Meep meep meep." Beaker

Terug naar “Informatica en programmeren”