to select consecutive more than one column in matlab having difference

조회 수: 2 (최근 30일)
Hello everyboby, I have a matrix named eta=54×1800.for selecting specific rows and columns typically we used e.g result=eta(:, 86:90:1800); But here I need to select consecutive 5 columns 86,87,88,89,90 each having difference 90, e.g after 86,87,88,89,90 I want to get 176,177,178,179,180.I try like result=eta(:,[86:90:1800,87:90:1800,88:90:1800,89:90:1800,90:90:1800]); but it does not give the result of consecutive columns.

채택된 답변

Stephen23
Stephen23 2017년 2월 26일
편집: Stephen23 2017년 2월 26일
Sort the indices to get consecutive columns adjacent to each other:
idx = sort([86:90:1800,87:90:1800,88:90:1800,89:90:1800,90:90:1800])
eta(:,idx)
Or without having to write that long list:
>> vec = 86:90;
>> C = arrayfun(@(b)b:90:1800, vec, 'Uni',0);
>> idx = sort([C{:}])
or generate them in the correct order in the first place:
>> vec = 86:90;
>> idx = bsxfun(@plus,vec(:),0:90:1800-90);
>> idx = idx(:).'

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Discrete Math에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by