getting time series data from simspace model

조회 수: 2 (최근 30일)
Ala'a Alshubbak
Ala'a Alshubbak 2023년 2월 25일
댓글: Ala'a Alshubbak 2023년 2월 28일
I am running a model of an excavator built on simspace simulation. I got my data from the model as a time series.
I try to enter each data independently to have a matrix. for example at time =12 . I want a matrix that has information on position x and z
I wrote my code as function named (create_NewPinLoc_XZ) to take the results from simulation (simOut) and an iteration time (I) and give me an out put of structure variable ( pin_struc) . although my script works probably on all-time slots, it fails on time =xx.8 and xx.3
for example, at time =18.3 or 18.8 .. the output structure called (pin_struc) gives an empty value.
starting from 15.8 ,and above , the results become empty structure for time= xx.3 and xx.8 only.
it looks strange , and i don't know what is exactly the issue.
here is my function script.
function pin_struc= create_NewPinLoc_XZ(simOut,I)
%%%%%%%%% simout contains a structure for all pin location as time serise
%%%%%%%%% I is a time between 0:0.1:31
%time vector
time=simOut.excavator_frames2.Chassis.A1.Time;
%chassis pins
A1=simOut.excavator_frames2.Chassis.A1;
A2=simOut.excavator_frames2.Chassis.A2;
%chassis matrix
A1_info=A1.data;
A2_info=A2.data;
%boom pins
B1= simOut.excavator_frames2.Boom.B1;
B2= simOut.excavator_frames2.Boom.B2;
B3= simOut.excavator_frames2.Boom.B3;
%boom matrix
B1_info=B1.data;
B2_info=B2.data;
B3_info=B3.data;
% stick pins
C1= simOut.excavator_frames2.Stick.C1;
C2= simOut.excavator_frames2.Stick.C2;
C3= simOut.excavator_frames2.Stick.C3;
C4= simOut.excavator_frames2.Stick.C4;
%stick matrix
C1_info=C1.data;
C2_info=C2.data;
C3_info=C3.data;
C4_info=C4.data;
% bucket
D1= simOut.excavator_frames2.Bucket.D1;
D2= simOut.excavator_frames2.Bucket.D2;
D3= simOut.excavator_frames2.Bucket.D3;
%BUCKET MATRIX
D1_info=D1.data;
D2_info=D2.data;
D3_info=D3.data;
%linkage
E1= simOut.excavator_frames2.Linkage.E1;
%LINKAGE MATRIX
E1_info=E1.data;
%create a data for a table for certain i time iteration
%data only for x-axis and z-axis [1 3]
%chassis @I itertion
A1_pin=A1_info(time==I,[1 3]);
A2_pin=A2_info(time==I,[1 3]);
%boom @I itertion
B1_pin=B1_info(time==I,[1 3]);
B2_pin=B2_info(time==I,[1 3]);
B3_pin=B3_info(time==I,[1 3]);
%stick @I itertion
C1_pin=C1_info(time==I,[1 3]);
C2_pin=C2_info(time==I,[1 3]);
C3_pin=C3_info(time==I,[1 3]);
C4_pin=C4_info(time==I,[1 3]);
%BUCKET
D1_pin=D1_info(time==I,[1 3]);
D2_pin=D2_info(time==I,[1 3]);
D3_pin=D3_info(time==I,[1 3]);
%LINKAGE
E1_pin=E1_info(time==I,[1 3]);
%THE GLOBAL NEW STRUCTURE
fprintf('find pins location on only x and z axies \n')
%Create new structure with only one info for one pins situation
%chassis
ExcvGlobal_new_xz.Chassis.ToBoom= A1_pin;
ExcvGlobal_new_xz.Chassis.ToBoomCyl= A2_pin;
%boom
ExcvGlobal_new_xz.Boom.ToBoomCyl=B1_pin;
ExcvGlobal_new_xz.Boom.ToStickCyl=B2_pin;
ExcvGlobal_new_xz.Boom.ToStick=B3_pin;
%stick
ExcvGlobal_new_xz.Stick.ToStickCyl=C1_pin;
ExcvGlobal_new_xz.Stick.ToBucketCyl=C2_pin;
ExcvGlobal_new_xz.Stick.ToBucketLinkage=C3_pin;
ExcvGlobal_new_xz.Stick.ToBucket=C4_pin;
%Bucket
ExcvGlobal_new_xz.Bucket.ToBucketLinkage=D1_pin;
ExcvGlobal_new_xz.Bucket.ToCuttingEdge=D2_pin;
ExcvGlobal_new_xz.Bucket.ToCG=D3_pin;
%Linkage
ExcvGlobal_new_xz.Linkage.ToBucketCyl=E1_pin;
pin_struc =ExcvGlobal_new_xz;
end
Can you please suggest something to develop my code and remove such a problem. the original simOut has values from time slot 0 till 31 with a step of 0.1
  댓글 수: 2
Ala'a Alshubbak
Ala'a Alshubbak 2023년 2월 27일
I can explain my issue in more clear words:
I have a time series data represneted by simOut. I want to enter some values inside it according to the time.
I use this instruction to enter the data of column 1 and 3 according to time =I
A1_pin=A1_info(time==I,[1 3]);
unfortunatily this instruction works with some values of I and give an empty array with another values
the error will be because of having an empty matrix , which is totally wrong as there is data within the original simOut file.
for example on simOut @ time= 21.8 , the A1.data= [0.00266849360760513 0.00328331387131686 1.96413626062420]
but when try to access it using the above instruction it gives me this
A1_pin =
0×2 empty double matrix
Ala'a Alshubbak
Ala'a Alshubbak 2023년 2월 28일
I solved it . thank you.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Electromagnetic Models에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by