How to create a 3-D array using information from FOR loop?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Robert Roy
am 22 Mai 2015
Kommentiert: Robert Roy
am 22 Mai 2015
Hi there, I am currently having a problem with trying to get data out from a FOR loop and place into a 3-D array.
I have tried using Array3D= cat(3,A) within and outwith the FOR loop but cant seem to get the array to work.
Thanks
4 Kommentare
Akzeptierte Antwort
Guillaume
am 22 Mai 2015
Bearbeitet: Guillaume
am 22 Mai 2015
1. Predeclare the array, 2. Just assign to it using indexing instead of using concatenation that is going to be slow.
Array3D = zeros(1024, 1280, Images); %3D array of 2D images
for i = t:Images
%read frame, I've not dealt with Davis images for a while but wasn't it
%Img = B.Data ?
Array3D(:, :, i) = Img;
end
3 Kommentare
Guillaume
am 22 Mai 2015
I've just downloaded the latest documentation of readimx, and indeed LaVision have completely changed the way it works.
The code you're using to read the images is fine. Note that I've reproduced your original indexing ( t:Images) which only reads images 19 and 20. Thus Array3D is only going to have values other than 0 for Array3D(:, :, 19) and Array3D(:, :, 20).
Doesn't this work?
nimages = 20;
Array3D = zeros(1024, 1280, nimages);
for imgidx = 1:nimages
buffer = readimx(fullfile(filename, sprintf('B%05d.im7', imgidx)));
Array3D(:, :, imgidx) = buffer.Frames{1}.Components{1}.Planes{1};
end
Also note that filename is a misleading variable name for a path. I would have called it path.
Also note the use of sprintf to construct the filename, which will create the right buffer name regardless of the number of digits in the image index.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!