How can I read the elements of an array backwards?

140 visualizzazioni (ultimi 30 giorni)
I have an array with x = 250000 elements. I want the code to read backwards a part of it:
k = pks3(1):-1:1;
%read data points backwards starting from pks3 and ending at the beginning
So even though I have i = 10 pks3 peak points, I want to create an array k from the first point pks3(1). But, the problem is that in the end I get k = 255997855 elements, in which the pks3 point for example is repeated for several hundreds of times. The rest of the code is this:
k = pks3(1):-1:1;
%read data points backwards starting from pks3 ending to pks3 again.
first = k(k<xfb1); % find all k such that k is smaller than xfb1
if ~isempty(first)
first = first(1); %store the first number which is smaller than xfb1
else
disp('No value of k is smaller than xfb1.')
end
distQ = length(first:pks3(1));
Qstart = locs_RwaveB(1)*distQ; %distance from locs_RwaveB to Qstart point
What am I doing wrong?
Thanks.

Risposta accettata

Ahmet Cecen
Ahmet Cecen il 18 Mag 2016
It appears to me that you are trying to do something very simple in a very convoluted way, probably due to programming practices in another language.
If you need to read x in reverse order, assuming x is a column vector simply do:
x = flipud(x); % flips the vector.
And now you can access it in forward order.
  6 Commenti
Stephen23
Stephen23 il 18 Mag 2016
The problem is not the end, it is the pks3(1). What value does pks3(1) have?
Konstantinos
Konstantinos il 18 Mag 2016
Modificato: Konstantinos il 18 Mag 2016
pks3(1) = 2.3937e+08

Accedi per commentare.

Più risposte (1)

Johannes Kalliauer
Johannes Kalliauer il 19 Apr 2021
a horizontal vector can be fliped using fliplr
x=1:4
x=fliplr(x)

Community Treasure Hunt

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

Start Hunting!

Translated by