dustynrobots
dustynrobots

Reputation: 311

Building a vector of multiple structure values in MATLAB

I'm trying to create a function that reads in a field of a structure to create a vector of fields. I have a structure of the form:

subject(i).stride(j).strideLength

and there are 10 subjects, about 10 strides per subject. I can create a long vector of the strideLength of all subjects, all strides with code like this:

k = 1;
for i=1:10
    for j=1:size(subject(i).stride, 2)       
        varVector(k) = subject(i).stride(j).strideLength;
        k = k + 1;
    end
end

however, there are a lot of different fields I want to do this with, and I'd like to do it with a function that I can call like this:

x(1) = groupData(strideLength);

but I can't figure out the syntax to append strideLength to subject(i).stride(j). within the above loop in a function. This is what I hoped would work and didn't:

function [varVector] = groupData(var)
%groupData returns a concatenated vector of a given variable (speed, etc.) 

k = 1;
for i=1:10
    for j=1:size(subject(i).stride, 2)       
        varVector(k) = subject(i).stride(j).var;
        k = k + 1;
    end
end
end

Any thoughts on how to do this right? Thanks in advance!

Upvotes: 0

Views: 47

Answers (1)

Geoff
Geoff

Reputation: 1603

In your groupData function, pass in the field/variable name as a string

x(1) = groupData('strideLength');

Then in the body of the code, access this field as follows

varVector(k) = subject(i).stride(j).(var);

Try the above and see what happens!

Upvotes: 1

Related Questions