How can I read the elements of an array backwards?

151 ビュー (過去 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 Center および File ExchangeDescriptive Statistics についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by