Springen naar inhoud

Array vullen met character string in matlab


  • Log in om te kunnen reageren

#1

Wouter_Masselink

    Wouter_Masselink


  • >5k berichten
  • 8252 berichten
  • VIP

Geplaatst op 01 september 2011 - 08:57

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
[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

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 01 september 2011 - 09:17

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.

disp(wildtype_group(2, 2));
> i
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

#3

Wouter_Masselink

    Wouter_Masselink


  • >5k berichten
  • 8252 berichten
  • VIP

Geplaatst op 01 september 2011 - 09:59

Daar kan ik jammer genoeg vrij weinig mee aangezien ik het volgende wil doen

% 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

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 01 september 2011 - 11:08

Heb je dit al bekeken? http://www.mathworks...ef/strings.html

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

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

#5

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 01 september 2011 - 13:03

Het is me geheel niet duidelijk wat je er mee wilt, maar goed

Met cell array:

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

c = [a; b];

of

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

#6

Wouter_Masselink

    Wouter_Masselink


  • >5k berichten
  • 8252 berichten
  • VIP

Geplaatst op 01 september 2011 - 13:59

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





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures