Add increasing values within an array

1 Ansicht (letzte 30 Tage)
Ole Braunholz
Ole Braunholz am 28 Okt. 2022
Kommentiert: Voss am 1 Nov. 2022
Hello, I have the following problem:
I get data of the angle of rotation of a screwdriver. Within a screw joint, the angle of rotation is reset to zero at a point in time. This can happen any number of times during a pass. Example:
1°,5°,10°,12°,1°,5°,10°,12°,1°,5°,10°,12°. The numbers are only exemplary.
I would like to merge the values now to a continuous data series. At the moment I have this code:
I hope I was able to describe the problem understandably. Many thanks
clear;
w=[1;2;3;1;2;3;1;2;3]; % Example Data
W=[];
for n=1:1:length(w)
if n==1
W(n)= 0; % 0 corresponds to: angle not reset
elseif n==max(length(w))
W(n)= 0;
elseif w(n)== w(n+1)
W(n)=0;
elseif w(n)>w(n-1)
W(n)=0;
elseif abs(w(n)-w(n-1))<-2
W(n)=0
elseif w(n)<w(n-1) % 1 corresponds to: Angle reset
W(n)=1;
end
end
  4 Kommentare
Ole Braunholz
Ole Braunholz am 28 Okt. 2022
The Output should be: [1,2,3,4,5,6,7,8,9]
Star Strider
Star Strider am 28 Okt. 2022
I still do not understand.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Voss
Voss am 28 Okt. 2022
w=[1;2;3;1;2;3;1;2;3];
w_new = zeros(size(w));
w_new(1) = w(1);
offset = 0;
for ii = 2:numel(w)
if w(ii) < w(ii-1)
offset = w_new(ii-1);
end
w_new(ii) = w(ii)+offset;
end
w_new
w_new = 9×1
1 2 3 4 5 6 7 8 9
  2 Kommentare
Ole Braunholz
Ole Braunholz am 28 Okt. 2022
Perfect! Thanks a lot :)
Voss
Voss am 1 Nov. 2022
You're welcome!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Chemistry finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by