关于n维度矩阵的Matlab最后维度访问

Rom*_*ain 10 arrays matlab multidimensional-array

我有一个矩阵,可以有几个维度:n × mn × m × pn × m × p × q或...

我想要做的是访问最后一个维度,如:

data = input(:,:,1)
Run Code Online (Sandbox Code Playgroud)

问题是:可以改变的数量.

Rod*_*uis 11

你应该利用这样一个事实,即数组中的索引可以是包含':'以下内容的字符串:

>> data = rand(2, 2, 2, 5);
>> otherdims = repmat({':'},1,ndims(data)-1);
>> data(otherdims{:}, 1)
ans(:,:,1) =
    7.819319665880019e-001    2.940663337586285e-001
    1.006063223624215e-001    2.373730197055792e-001
ans(:,:,2) =
    5.308722570279284e-001    4.053154198805913e-001
    9.149873133941222e-002    1.048462471157565e-001
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档subsref.


Den*_*din 5

这有点像黑客,但这是你如何做到这一点:

data = rand(2,2,3);

eval(['data(' repmat(':,',1,ndims(data)-1) '1)'])
Run Code Online (Sandbox Code Playgroud)

这将给出(取决于randon数字):

ans =

      0.19255      0.56236
      0.62524      0.90487
Run Code Online (Sandbox Code Playgroud)