rhyme云 2022-06-29 03:37 采纳率: 70.6%
浏览 31
已结题

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

展开全部

  • 写回答

2条回答 默认 最新

  • 胸毛男 2022-06-29 04:20
    关注
    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);
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 已采纳回答 6月29日
  • 请详细说明问题背景 6月29日
  • 创建了问题 6月29日

悬赏问题

  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部