Split array in 3 groups by using one column values
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I would like to split my data in 3 groups based on the values in axis 1
x = < 25 i would like to get a 0
x = > 25 < 419 i would like to get a 1
x = > 419 i would like to get a 2
how can I do this?
% Clear memory
clear; close all;
% Load data
T=readtable('SC01001 (2018-11-23)15sec.csv','PreserveVariableNames',true)
x1=T(:,1); %Date
x2=T(:,2); % Time
y1=T(:,3); % Axis 1
if
y1 <25
y1 = 0
elseif
y1 25>y1<419
y1 = 1
elseif
y1 >419
y1 = 2
end
0 Kommentare
Akzeptierte Antwort
Marta G
am 24 Feb. 2020
Bearbeitet: Marta G
am 24 Feb. 2020
You shouldnt use a vector in a if condition.
In your case, it would be more effective to use this
loc=find(y1<25);
y(loc)=0;
loc1=find(y1>25 & y1<419);
y(loc1)=1;
loc2=find(y1>419);
y(loc2)=2;
If you are new to matlab you might understand the problem better with a for loop.
for i=0:length(y1)
if(y1(i)<25)
y(i)=0;
elseif (y1(i)>25 & y1(i)<419)
y(i)=1;
else
y(i)=2;
end
end
I prefer to not rewrite any variable i am using until it is completely necessary.
Make sure you really need those intervals and consider what you have to do if y1=25 since in your original code it would not enter any if else condition
7 Kommentare
Marta G
am 25 Feb. 2020
Bearbeitet: Marta G
am 25 Feb. 2020
Hello,
Thank you Ankit for your correction
There is a step missing:
x1=T(:,1); %Date
x2=T(:,2); % Time
y1=table2array(T(:,3)); % Axis 1
for i=1:length(y1)
if(y1(i)<25)
y(i)=0;
elseif (y1(i)>25 & y1(i)<419)
y(i)=1;
else
y(i)=2;
end
end
Make sure in future problems that you read the error and understand what it means, as that line missing is easily solvable. If you need matrix or vectors instead of table you can use table2array: https://es.mathworks.com/matlabcentral/answers/380821-how-to-convert-table-to-matrix
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Data Type Conversion 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!