Rom*_*ain 10 arrays matlab multidimensional-array
我有一个矩阵,可以有几个维度:n × m或n × m × p或n × 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.
这有点像黑客,但这是你如何做到这一点:
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)