67 lines
2.2 KiB
Matlab
67 lines
2.2 KiB
Matlab
function showRecMat(filename,sheets)
|
|
|
|
Run = Simulink.sdi.Run.create;
|
|
Run.Name = filename;
|
|
|
|
for sh = sheets
|
|
p_name = sprintf('p%d',sh);
|
|
t2_name = sprintf('p%d_title2',sh);
|
|
disp(t2_name);
|
|
try
|
|
t_name = sprintf('p%d_title',sh);
|
|
S = load(filename,p_name, t_name, t2_name);
|
|
catch
|
|
t_name = sprintf('p%d_title2',sh);
|
|
S = load(filename,p_name, t_name, t2_name);
|
|
end
|
|
p = S.(p_name);
|
|
if ~isempty(p)
|
|
title = S.(t_name);
|
|
title2 = S.(t2_name);
|
|
time_name = strtrim(title2(1,:));
|
|
time_sec = p(:,1);
|
|
n = size(title,1);
|
|
for i=2:n
|
|
name = strtrim(title2(i,:));
|
|
if ~strcmp(name, time_name)
|
|
ts = timeseries(p(:,i), time_sec);
|
|
desc = strtrim(title(i,:));
|
|
ts.Name = [name ' ' desc];
|
|
Run.add('vars',ts);
|
|
switch name
|
|
case 'p'
|
|
[pdot, t1]=diff(ts.Data,ts.time,4);
|
|
ts = timeseries(pdot, t1);
|
|
ts.Name = 'pdot(deg/s2)';
|
|
Run.add('vars',ts);
|
|
case 'q'
|
|
[qdot, t1]=diff(ts.Data,ts.time,4);
|
|
% N=length(qdot);
|
|
% nfft=2^nextpow2(N);
|
|
% fft_qdot=fft(qdot,nfft)/nfft;
|
|
% f=25/2*linspace(0,1,nfft/2);
|
|
% plot(f,2*abs(fft_qdot(1:nfft/2)));
|
|
ts = timeseries(qdot, t1);
|
|
ts.Name = 'qdot(deg/s2)';
|
|
Run.add('vars',ts);
|
|
case 'r'
|
|
[rdot, t1]=diff(ts.Data,ts.time,4);
|
|
ts = timeseries(rdot, t1);
|
|
ts.Name = 'rdot(deg/s2)';
|
|
Run.add('vars',ts);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
% 在仿真数据检查器中查看信号
|
|
Simulink.sdi.view
|
|
end
|
|
|
|
function [qdot, t1]=diff(q,t,delta)
|
|
qdot = (q(1:end-delta*2)-q(1+delta*2:end))./(t(1:end-delta*2)-t(1+delta*2:end));
|
|
t1 = t(1+delta:end-delta);
|
|
end
|