Indexing portions of a vector with array
Ältere Kommentare anzeigen
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 Kommentare
JESUS DAVID ARIZA ROYETH
am 10 Dez. 2019
Could you put examples with desired inputs and outputs please?
Mohammed Kagalwala
am 10 Dez. 2019
Jeremy
am 10 Dez. 2019
What exactly is the problem? The code you provided appears to do what you are asking for
Mohammed Kagalwala
am 10 Dez. 2019
Bearbeitet: Mohammed Kagalwala
am 10 Dez. 2019
Antworten (1)
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 Kommentare
Mohammed Kagalwala
am 10 Dez. 2019
Jeremy
am 10 Dez. 2019
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...
Kategorien
Mehr zu Execution Speed finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!