matlab在excel中的提取代码解读

能不能帮忙解答一下这段代码,这段代码是提取excel表格中两列数据的,第一列是时间,第二列是速度

img

clear
clc

filename = 'Impulse_TimeSignal.xlsx';
name= {'Impulse_low','Impulse_high'};
for i = 1:2
% read data
sheet = i;
vel = xlsread(filename,sheet); % low frequency
t = vel(:,1);
dt = t(2)-t(1);
vel(:,[1 2]) = [];

acc = diff(vel)/dt;

% calculate acceleration
outAcc = zeros(size(vel));
outAcc(1) = 0; % initial value

for k = 2:length(t)
    outAcc(k) = 2*acc(k-1)-outAcc(k-1);
end

% calculate vel, disp
outVel = cumtrapz(t, outAcc);
outDisp = cumtrapz(t, outVel);

% output
figure
plot(t(1:1000), outVel(1:1000))
hold on
plot(t(1:1000), vel(1:1000),'--')

Accl = [t,outAcc]';
fid = fopen([name{i},'.txt'], 'wt');
fprintf(fid, '%12.8f %12.8f\n', Accl);
fclose(fid);

end

clear
clc

filename = 'Impulse_TimeSignal.xlsx';
name= {'Impulse_low','Impulse_high'};
for i = 1:2
% read data
sheet = i;
vel = xlsread(filename,sheet); % low frequency
t = vel(:,1);   %取出了内容的所有行,第一列,读入了时间那列
dt = t(2)-t(1);  %计算个时间间隔
vel(:,[1 2]) = [];  %把vel所有行,1,2列都清空,感觉就是vel清空了 它就两列吧

acc = diff(vel)/dt;  计算加速度   diff(X), for a vector X, is [X(2)-X(1)  X(3)-X(2) ... X(n)-X(n-1)]. 每两个算的差值。都除以dt
 
% calculate acceleration
outAcc = zeros(size(vel));    %构造一个全是0的矩阵,行数列数按照vel的行数列数
outAcc(1) = 0; % initial value  %让outAcc第一个元素是0,这多余啊,上一步必然全是零
 
for k = 2:length(t)
    outAcc(k) = 2*acc(k-1)-outAcc(k-1);    %outAcc第一个是0,而之后是acc对应位置的2倍减去对应位置上一个值
end
 
% calculate vel, disp
outVel = cumtrapz(t, outAcc);  累积梯形数值积分。输出加速度与时间的积分,是在t秒时刻的输出速度
outDisp = cumtrapz(t, outVel); 输出速度与时间的积分是输出的瞬时路程
 
% output
figure
plot(t(1:1000), outVel(1:1000))   %画出输出速度与时间的关系曲线
hold on
plot(t(1:1000), vel(1:1000),'--')  %画出速度与时间的关系曲线
 
Accl = [t,outAcc]';    %时间与输出加速度
fid = fopen([name{i},'.txt'], 'wt'); %以‘Impulse_low'或'Impulse_high'为名字,存到一个txt之中  第一次循环是Impulse_low.txt。第二次叫Impulse_high.txt
fprintf(fid, '%12.8f %12.8f\n', Accl);  %保存时间与输出加速度  整数部分12位有效,小数部分8位
fclose(fid);

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632