Files
sunny360vfe_proj/doc/showRecMat.m
T

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