Modifying a Variable if a condition is met
21 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Cody Kessler
am 1 Jul. 2021
Kommentiert: Cody Kessler
am 1 Jul. 2021
I have a 300x1 Matrix, if a value in rows 1:75 is negative I want to add 360 to the negative value, if its positive I want to add 180 to it. There are other conditions similar to this that will be done to values in 76:150, 151:225, 226:300, but once I get started I think I can figure the rest out. I'm fairly new to Matlab so I intially tried an If statement but I couldnt get it to work. Any help would be greatly appreciated
0 Kommentare
Akzeptierte Antwort
Rik
am 1 Jul. 2021
Array operation in Matlab tend to be much faster than other solutions. This is a situation where you can use logical indexing:
%generate some random data
data=randn(30,1)*180;data(data<-180)=-180;data(data>180)=180;
%create copy to show changes later
original=data;
ind=1:5;
tmp=data(ind);
L=tmp<0;
data(ind(L)) = data(ind(L))+360;
L=tmp>0; %NB: tmp is not updated yet, this might not be what you want
data(ind(L)) = data(ind(L))+180;
[original data]
Using a setup like this allows you to easily create the ind array inside a loop.
If performance is paramount, this is not the optimal solution.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!