matlab从函数中的三维矩阵中提取特定的二维矩阵

时间:2015-01-30 15:59:40

标签: matlab matrix

我想从3D矩阵中提取2D矩阵。现在,我知道如何用

做到这一点
A = ones(10,10,10);
B = squeeze(A(:,:,2));

但是我想编写一个函数,它将获得3D矩阵作为输入,以及获取2D矩阵的维度和索引。在上面的例子中,这将给出:

B = my_func(A,3,2);

有什么想法吗?

非常感谢!

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