# Indexing portions of a vector with array

조회 수: 2(최근 30일)
Mohammed Kagalwala 2019년 12월 10일
댓글: Jeremy 2019년 12월 10일
Hi,
I currently have a vector a that is 12 x1. I want to index it such that I get the following vector q = [a(4:7),a(4:7)]. I can create an array [4 4] and [7 7], when I try to index a([4 4], [7 7]). I only get q = a(4:7). Can someone help me with the correct syntax here? Is this even possible with this sort of indexing ?
Sample input:
a = [1 2 3 4 5 6 7 8 9 10 11 12];
Sample output:
q = [a(4:7),a(4:7)] = [4 5 6 7 4 5 6 7]
The size of a can vary and the index 4:7 can vary
Thank you.
##### 댓글 수: 4표시숨기기 이전 댓글 수: 3
Mohammed Kagalwala 2019년 12월 10일
편집: Mohammed Kagalwala 2019년 12월 10일
I want to perform this action in general where all I'm given is an array of start indecies and an array of stop indecies. In the example, provided above this would [4 4], [7 7]. This could be of size N. I want to create q using these two arrays, WITHOUT using for loops.

댓글을 달려면 로그인하십시오.

### 답변(1개)

Jeremy 2019년 12월 10일
편집: Jeremy 2019년 12월 10일
a = 1:12;
id_start = [4 4]';
id_stop = [7 7]';
c = arrayfun(@colon,id_start,id_stop,'UniformOutput',false);
d = cell2mat(c);
p = reshape(d',[1 numel(d)]);
q = a(p);
##### 댓글 수: 2표시숨기기 이전 댓글 수: 1
Jeremy 2019년 12월 10일
I think arrayfun is, in general, not great if you are looking to optimize efficiency. But you asked for no loops and I wanted to solve the puzzle - I wasn't able to get the colon operator to work on the array of start and stop indices without it. Maybe there is another way...

댓글을 달려면 로그인하십시오.

### 범주

Find more on Loops and Conditional Statements in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by