我想从3D矩阵中提取2D矩阵。现在,我知道如何用
做到这一点A = ones(10,10,10);
B = squeeze(A(:,:,2));
但是我想编写一个函数,它将获得3D矩阵作为输入,以及获取2D矩阵的维度和索引。在上面的例子中,这将给出:
B = my_func(A,3,2);
有什么想法吗?
非常感谢!
答案 0 :(得分:1)
function out=my_func(A,dim,ix)
index=repmat({':'},1,ndims(A));
index{dim}=ix;
out=squeeze(getfield(A,index));
end
或另一种选择:
function out=my_func(A,dim,ix)
index=arrayfun(@(x)(1:x),size(A),'uni',false);
index{dim}=ix;
out=squeeze(A(index{:}));
end
答案 1 :(得分:0)
怎么样:
function out=my_func(A,dim,i)
switch dim
case 1
out = squeeze(A(i,:,:));
case 2
out = squeeze(A(:,i,:));
case 3
out = squeeze(A(:,:,i));
end