how to plot a time series from row 1000 to 3000

3 visualizaciones (últimos 30 días)
Atefeh
Atefeh el 15 de Oct. de 2023
Editada: dpb el 16 de Oct. de 2023
Hello and have a good day
I have a time series and I wanna plot 3D for t=0.1:0.001:0.3
Here is my code for all the time series
LD6 = load('output_a_f_LL_bus5.mat');
Data = LD6.Id_6.Data;
t = LD6.t.Time;
figure
plot3(Data(:,1), Data(:,2), t)
grid on
xlabel('Id')
ylabel('Iq')
zlabel('time')
How can I plot3D the time series after the 1000th row (or for the times between 0.1 to 0.3)?
  2 comentarios
Dyuman Joshi
Dyuman Joshi el 15 de Oct. de 2023
You are using output_a_f_LL_bus5.mat to load the variables but you have provided a different .mat file.
Atefeh
Atefeh el 15 de Oct. de 2023
Yes, You are right, Here is the output file

Iniciar sesión para comentar.

Respuesta aceptada

Voss
Voss el 15 de Oct. de 2023
LD6 = load('output_a_f_LL_bus5.mat');
Data = LD6.Id_6.Data;
t = LD6.t.Time;
figure
idx = t >= 0.1 & t <= 0.3;
plot3(Data(idx,1), Data(idx,2), t(idx))
grid on
xlabel('Id')
ylabel('Iq')
zlabel('time')

Más respuestas (1)

dpb
dpb el 15 de Oct. de 2023
Editada: dpb el 16 de Oct. de 2023
d=dir('*bus*.mat');
load(d.name,'Id_6')
whos
Name Size Bytes Class Attributes Id_6 1x1 72372 timeseries ans 1x47 94 char cmdout 1x33 66 char d 1x1 1157 struct
head(Id_6)
timeseries with properties: Events: [] Name: '' UserData: [] Data: [3001×3 double] DataInfo: [1×1 tsdata.datametadata] Time: [3001×1 double] TimeInfo: [1×1 tsdata.timemetadata] Quality: [] QualityInfo: [1×1 tsdata.qualmetadata] IsTimeFirst: 1 TreatNaNasMissing: 1 Length: 3001
ix=(Id_6.Time>=0.1)&(Id_6.Time<=0.3);
plot3(Id_6.Data(ix,1), Id_6.Data(ix,2), Id_6.Time(ix))
grid on
xlabel('Id')
ylabel('Iq')
zlabel('time')
I'd strongly suggest to convert over to using timetable instead of timeseries; I've not found anything really useful at all about the implementation of the time series objects; the syntax has generally been more in the way than helpful; even the doc suggests it. Unfortunately, it's another case where an experimental new data class was released into the wild and while it (like the ill-fated Statistics TB dataset class) proved to be less than an optimal solution, now it exists and seemingly will have to be carried around as excess baggage forever.
ADDENDUM:
In my own code here, I'd have written the above as
ix=iswithin(Id_6.Time,0.1,0.3);
where iswithin is my utility function kept in a Utilities folder on the matlabpath just behind the working directory
function flg=iswithin(x,lo,hi)
% returns T for values within range of input
% SYNTAX:
% [log] = iswithin(x,lo,hi)
% returns T for x between lo and hi values, inclusive
flg= (x>=lo) & (x<=hi);
end
This "syntactic sugar" function makes top level code much simpler to write/read and is particularly valuable when there are multiple ranges, etc., ...

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by