Indexing portions of a vector with array

2 ビュー (過去 30 日間)
Mohammed Kagalwala
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 件のコメント
Jeremy
Jeremy 2019 年 12 月 10 日
What exactly is the problem? The code you provided appears to do what you are asking for
Mohammed Kagalwala
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
Jeremy 2019 年 12 月 10 日
編集済み: Jeremy 2019 年 12 月 10 日
I had to think about this for a while, but I think that this accomplishes the task you are looking for
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 件のコメント
Mohammed Kagalwala
Mohammed Kagalwala 2019 年 12 月 10 日
Thanks ! Works just as I described. Though I did a timing test against a for-loop which showed the for-loop was the faster method. I'm curious if there's a way to beat a for-loops speed.
Jeremy
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...

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by