For a multidimensional array is it possible to return all other array dimensions for a single index of one dimension without having to use the colon for indexing?
显示 更早的评论
I am working on a problem where an input space of n inputs is being partitioned. I have a structure containing all of the models (which have been partitioned), which has n-dimensions where the number of models in each dimension is the number of partitions in that dimension.
I want to create a copy of a set of models which correspond to a particular index in one of the n dimensions, advance all of the model sets beyond that index to their original index + 1, then insert the copy next to the original.
The problem can be solved by using eval (see code below), but it is a bit messy and I wondered if there is a more succinct way without having to generate text strings containing loads of colons and commas?
Mdls = struct(); % Initialise Mdls as struct
Mdls = repmat(Mdls,[2,4,6,8,6,4,2]); % Arbitrarily size the struct
dim = 3; % dimension to elongate
ind2c = 3; % Index in dimension "dim" to copy
eval(['MdlsNew = ',repmat(['cat(',num2str(dim),','],1,2),...
'Mdls(',strjoin(repmat({':,'},1,dim-1)),'1:ind2c',strjoin(repmat({',:'},1,length(size(Mdls))-dim)),'),',...
'Mdls(',strjoin(repmat({':,'},1,dim-1)),'ind2c',strjoin(repmat({',:'},1,length(size(Mdls))-dim)),')),',...
'Mdls(',strjoin(repmat({':,'},1,dim-1)),'(ind2c+1):end',strjoin(repmat({',:'},1,length(size(Mdls))-dim)),'));'])
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Linear Algebra 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!