arrayDatastore Read cut dimension
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
For a segmentation task I have a Hx Wx M items as matrix, I gonna convert into a logical array.
I would like to read these items into an arrayDatastore and tried following (simplified code):
for counter = 1:20
A= magic(10);
resultItem= cat(3,A,A,A);
result(counter,:,:,:)=resultItem;
end
result=logical(result<5& result>2);
ds=arrayDatastore(result,"ReadSize",1,"OutputType","same");
The read funktion sadly delivers a 1x4 dimensional array instead of 1x3. How can I clipp the first dimension - the counter - away ?
Or any other solution how to read everything into an arrayDatastore during a loop?
0 Kommentare
Antworten (1)
Walter Roberson
am 18 Apr. 2022
result(:,:,:,counter)=resultItem;
2 Kommentare
Walter Roberson
am 18 Apr. 2022
Sorry, it does not appear to be possible. The closest appears to be that you can return a scalar cell that is 3 dimensions. If you need a numeric return instead of a scalar cell then you are going to get a 4 dimensional object that you would then have to reshape() or permute() or squeeze()
for counter = 1:20
A = magic(10);
resultItem = cat(3,A,A,A);
result(:,:,:,counter) = resultItem;
end
result = logical(result<5& result>2);
ds = arrayDatastore(result,"ReadSize", 1, "OutputType", "cell", "IterationDimension", 4);
test1 = read(ds);
test2 = read(ds);
whos
size(test1{1})
Siehe auch
Kategorien
Mehr zu Startup and Shutdown 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!