A vectorisation problem with arrays (or matrices) and structs

3 views (last 30 days)
I have a m x n x p array, consisting of 'p' frames of height 'm' and width 'n' from a movie file. I want to assign all of the images in the array to a struct without using a 'for' loop.
i.e. my code is:
videoHeight = size(movieMatrix,1);
videoWidth = size(movieMatrix,2);
totalFrames = size(movieMatrix,3);
movieStructure(totalFrames).cdata = zeros(videoHeight,videoWidth);
movieStructure(1:totalFrames).cdata = movieMatrix(:,:,1:totalFrames);
instead of:
movieStructure(totalFrames).cdata = zeros(videoHeight,videoWidth);
for i = 1:totalFrames
movieStructure(i).cdata = movieMatrix(:,:,i);
end
I have looked at pages on vectorisation, but I can't find any examples that helps me with structs and arrays together. I appreciate help that anyone offers!

Accepted Answer

Walter Roberson
Walter Roberson on 12 Oct 2011
movieStructure = struct('cdata', mat2cell(movieMatrix,videoHeight,videoWidth,ones(1,totalFrames)) );

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!