【问题标题】:matlab extract specific 2D matrix from 3D matrix in function [duplicate]matlab从函数中的3D矩阵中提取特定的2D矩阵[重复]
【发布时间】:2015-03-30 03:50:13
【问题描述】:

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

A = ones(10,10,10);
B = squeeze(A(:,:,2));

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

B = my_func(A,3,2);

有什么想法吗?

非常感谢!

【问题讨论】:

标签: matlab matrix


【解决方案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

【讨论】:

  • 非常感谢,我会尽快尝试的!
【解决方案2】:

怎么样:

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

【讨论】:

  • 是的,想到了这一点,但我想知道是否有更简化的解决方案而不列举所有可能的情况......
猜你喜欢
  • 1970-01-01
  • 2015-02-04
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
相关资源
最近更新 更多