%s=importdata('disp_data.dat'); %save the contents in displacement_data.dat as s clear all;close all;clc load disp_data time=trace_x(1,:)'; %first column in data is saved as time d_data=trace_y(2,:)';%second column in data is saved as experimental displacements %maxval=max(d_data'); vval = max(d_data) index=find(d_data==vval) time=time(index:end,1)-time(index,1); %first column in data is saved as time d_data=d_data(index:end); % d_data(1)=d_data(1); C0=3; K0=2; q0=[C0;K0]; % q0=[C0;K0;vval]; tic [q,cost]=fminsearch(@cost_beam,q0,[],time,d_data);%find optimal parameters toc % options=optimset(''); %tic %%[q1,cost1]=fminunc(@cost_beam,q0,[],time,d_data);%find optimal parameters %toc %pause C=q(1);%optimal values for C and K K=q(2); % x0=[q(3) 0]; %initial conditions x0=[d_data(1) 0]; %initial conditions [t,x]=ode23(@ode_model,time,x0,[],C,K); %solve the mass-spring dashpot model d_model=x(:,1); subplot(2,1,1) plot(time,d_data,'--',time, d_model,'r') legend('experimental data','model displacement') title('Two-parameter model estimation'); xlabel('time (s)'); ylabel('displacement'); subplot(2,1,2) plot(time,(d_data-d_model)) title('Residuals'); legend('y_i-\hat{y}_i'); xlabel('time (s)'); ylabel('Error term');