How to get values in an 8x8x4096 matrix?
1 次查看(过去 30 天)
显示 更早的评论
I have a matrix of size 8x8x4096. I need to get the values of positions (1,2),(2,2),(2,1) of each 8x8 block of all 4096 such blocks into a variable "x","y","z" respectively. Means all the values at locations (1,2) of 4096 blocks in variable x and (2,2) in y and (2,1) in z respectively.
0 个评论
采纳的回答
Andrei Bobrov
2018-3-1
编辑:Andrei Bobrov
2018-3-1
Let M - your array [8x8x4096].
One variant:
[m,n,k] = size(M);
x = [1,2,2];
y = [2,2,1];
out = M(sub2ind([m,n],x(:),y(:)) + (0:k-1)*m*n)'; % MATLAB >= R2016b
% if MATLAB < R2016b then
out = M(bsxfun( @plus,sub2ind([m,n],x(:),y(:)),(0:k-1)*m*n))';
T_out = array2table(out,'v',{'x','y','z'});
2 个评论
Andrei Bobrov
2018-3-1
编辑:Andrei Bobrov
2018-3-1
Use out(:,1) or T_out.x or just see and use variant from Stephen's answer.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!