Archief - Matlab

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

yannick

Legacy Member
Beste,

Ik heb een vector met getallen die ik moet coderen, de codes voor elke waarde staan in een structure

=> Struct S met fields value en code => s.value en s.code.

Nu moet ik dus heel de vector x doorlopen en bij elk value de code in "bitvorm" in een soort van char array zetten.
Nu is mijn vroeg of ik dit in batch kan doen of dat ik elke waarde in de vector ga moeten doorlopen met een forlus.

Hier een simpel voorbeeld over wat ik wil doen (de echte vector is 1938 values lang btw):

Gegevens:
x=[ 1 2 2 2 1]

s(1).value=1
s(1).code='0'

s(2).value=2
s(2)code='1'

codedx='01110';

Het enigste wat ik mij dus afvraag is of ik alles in "batch" kan verwerken of dat ik vector x value per value zal moeten doorlopen :).

mvg
Yannick Wellens

Mr. Icecube

Legacy Member
Bij rekenkundige operaties op een vector, kan je eenvoudig "in batch" werken.
Als je bv op jou vector x het volgende doet: y = x.^2, krijg je:
y = [1 4 4 4 1].

Met meer complexe operaties, lukt het meestal niet. Dus dat zal je zelf eens moeten proberen.

Wat echter wel kan, is werken met een lus:
Code:
[H,W] = size(x);

for i=1:W
         de operatie op het i-de element in x
end


edit:
Juist eens even iets getest in octave (opensource versie van Matlab):
Als je niet moet werken met die structs, kan je het ook anders eenvoudig oplossen:

Maak gewoon een vector c, waarin op de i-de positie de bijhorende gecodeerde waarde van i staat.
Dus in jouw voorbeeld: c = [0 1]
Nu kan je gewoon het volgende uitvoeren: y=c(x)
Het resultaat is dan: y = [0 1 1 1 0]
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan