arrayDatastore Read cut dimension
    2 次查看(过去 30 天)
  
       显示 更早的评论
    
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 个评论
回答(1 个)
  Walter Roberson
      
      
 2022-4-18
            result(:,:,:,counter)=resultItem;
2 个评论
  Walter Roberson
      
      
 2022-4-18
				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})
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

