How to select non-sequential values in an array?

18 Ansichten (letzte 30 Tage)
Nicholas
Nicholas am 28 Sep. 2014
Hello forum,
I am trying to select the first, fifth, and ninth values of a 12x1 matrix. I am aware of how to reference sequential values like a(1:5,1) for the first five values but cannot figure out how to properly reference the non-sequential values. Thank you!
  1 Kommentar
ADITYA RAJ ANAND
ADITYA RAJ ANAND am 2 Dez. 2020
a ( [1 , 5 , 9] )
added spacing for clear visibility, its optional !!

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 28 Sep. 2014
out = yourvector(1:4:end);
  6 Kommentare
Rodolfo Torres
Rodolfo Torres am 17 Mai 2020
Index exceeds the number of array elements (3).
It is the message I got, when I applies your solution
Walter Roberson
Walter Roberson am 17 Mai 2020
YourVector = randi(9,1,12)
YourVector(1:4:end)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Nestor Lora
Nestor Lora am 30 Nov. 2019
ans = vector([1 5 9])
  9 Kommentare
Walter Roberson
Walter Roberson am 27 Sep. 2020
Bearbeitet: Walter Roberson am 30 Okt. 2020
vector(1 5 9) would be invalid syntax
vector(1, 5, 9) would try to refer to a single value at row 1, column 5, "page" 9.
[1 5 9] or [1, 5, 9] build a list with three elements, and passing the list in to vector() means to return one value for each entry in the list.
Why is [] used to construct lists and not something like %1, 5, 9% ? Well, you need a different character to mark the beginning and end of a list so that you can nest lists. They could have arbitrarily chosen something like #1, 5, 9% but it would not have been very readable. For readability they had to use one of the available paired delimiter characters, () or [] or {} or < > or /\ .
The () pair has a lot of history for use to indicate precidence, but there is some history of use to create "tuples" so it would not be completely ruled out, but it is easier to read code if you do not need to do careful bracket counting to determine if you are using precedence or tuples.
< > has been used to construct multidimensional objects in Maple, but even Maple uses [] for ordinary lists. Historically < > delimiters have been used to delineate formal syntax such as HTML and BNF. And it gets complicated to distinguish between using these as lists or using them as relationship operators.
{} does have some history of being used for lists, but it has more history of being used for sets.
/\ has no history that I know of of being used by anyone for lists, and it would have the complication of needing to be distinguished from division.
The pair that has the most history of being used for lists is [].
It is true that Mathworks could have chosen something else than [] to indicate lists, but [] has the greatest weight of history behind it, with {} perhaps being second and < > a distant third. Using () for lists is rare outside of formal textbook discussions of tuples, with the tuples discussed in such textbooks rarely being complex enough to require precedence grouping.
Mathworks using [] was not the only option, but it was the most natural choice.
Junaid Shaikh
Junaid Shaikh am 29 Nov. 2020
Thanks, it works.

Melden Sie sich an, um zu kommentieren.


Li Zhou
Li Zhou am 25 Apr. 2020
density([1,3,6],1) if you are doing MATLAB Onramp
  4 Kommentare
Xiaodi Lin
Xiaodi Lin am 24 Jul. 2020
It works, Thanks!
Irene Armenta
Irene Armenta am 30 Okt. 2020
OMG thank you!

Melden Sie sich an, um zu kommentieren.


Adarsh Vijayan
Adarsh Vijayan am 27 Apr. 2020
Bearbeitet: Walter Roberson am 24 Jul. 2020
for i=[1 3 6]
x=density(i)
disp(x)
end

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by