How can I read the elements of an array backwards?

조회 수: 56 (최근 30일)
Konstantinos
Konstantinos 2016년 5월 18일
답변: Johannes Kalliauer 2021년 4월 19일
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.

채택된 답변

Ahmet Cecen
Ahmet Cecen 2016년 5월 18일
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
Stephen23
Stephen23 2016년 5월 18일
The problem is not the end, it is the pks3(1). What value does pks3(1) have?
Konstantinos
Konstantinos 2016년 5월 18일
편집: Konstantinos 2016년 5월 18일
pks3(1) = 2.3937e+08

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

추가 답변 (1개)

Johannes Kalliauer
Johannes Kalliauer 2021년 4월 19일
a horizontal vector can be fliped using fliplr
x=1:4
x=fliplr(x)

카테고리

Help CenterFile Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by