Index exceeds the number of array elements (0). Error in TPA (line 32) time_orig = time_orig - time_orig(1);can any one solve this
1 view (last 30 days)
Show older comments
Hello there am facing problem in this. i can run one text file which has 1-1603 numbers and this one i have 1-3504 numbers showing errors. how to fix it.
clear all;
clc;
close all;
filename = 'text2.xlsx';
sheet = 1;
start = '1';
end1 = '3504';
forceRange = ['B' start ':B' end1];
disprange = ['C' start ':C' end1];
timerange = ['A' start ':A' end1];
force_orig = xlsread(filename, sheet, forceRange);
disp_orig = xlsread(filename, sheet, disprange);
time_orig = xlsread(filename, sheet, timerange);
compute = 1;
time_interval = 0.1;
specimen_type = 1;
specimen_dia = 10;
specimen_height = 10;
specimen_area = pi*(specimen_dia/2)^2;
endcount = 4;
mean_range = 10;
tol_factor = 2;
[inum, jnum] = size(time_orig);
startpt = 1;
endpt = inum;
time_orig = time_orig - time_orig(1);
time_end = round(max(time_orig));
time = 0:time_interval:time_end;
time = time';
disp = interp1(time_orig, disp_orig, time); % Error fixed
force = interp1(time_orig, force_orig, time);
[isize, jsize] = size(time);
x_halfspan = round(isize/2);
mean_force_level = mean(force(x_halfspan-mean_range:x_halfspan+mean_range));
force = force-mean_force_level; % offset zero force level
tol_force_level_max = max(force(x_halfspan-mean_range:x_halfspan+mean_range))*tol_factor;
tol_force_level_min = min(force(x_halfspan-mean_range:x_halfspan+mean_range))*tol_factor;
point1=1;
point2=1;
point3=1;
point4=1;
point5=1;
point6=1;
point7=1;
point8=1;
point3c=1;
point1 = 1;
[dispmax1 point3c] = max(disp(1:x_halfspan));
[dispmax2 point7temp] = max(disp(x_halfspan+1:isize));
point7 = point7temp+x_halfspan;
[Hardness point3] = max(force(1:point3c));
counter = 0;
point2 = 1;
for i = 1:point3
[force_p2 ip2] = max(force(1:i));
if point2==ip2
counter = counter+1;
else
point2 = ip2;
counter = 0;
end
if counter == endcount
break
end
end
point4 = point3c;
for i = point3c:x_halfspan
if force(i)<=tol_force_level_max
point4 = i;
break
end
end
point5 = point4+20;
point6 = point7;
for i=point7:-1:x_halfspan
if force(i)<=tol_force_level_max
point6 = i;
break
end
end
point8 = point7;
for i=point7:isize
if force(i)<=tol_force_level_max
point8 = i;
break
end
end
dispscale =1; %25
%for adjusting the space of texts in the figure
xstep = 40;%120
ystep = 5;
points = [point1 point2 point3 point4 point5 point6 point7 point8 point3c];
apt_points = [startpt endpt points];
figure;
subplot(2,1,1),plot(time,disp,'r','LineWidth',1.5),xlabel('Time (s)'), ylabel('displacement (mm)'), grid on;
text (time(points(1)),disp(points(1)),'x point1','Fontsize',14);
text (time(points(2)),disp(points(2)),'x point2','Fontsize',14);
text (time(points(3)),disp(points(3)),'x point3','Fontsize',14);
text (time(points(4)),disp(points(4)),'x point4','Fontsize',14);
text (time(points(5)),disp(points(5)),'x point5','Fontsize',14);
text (time(points(6)),disp(points(6)),'x point6','Fontsize',14);
text (time(points(7)),disp(points(7)),'x point7','Fontsize',14);
text (time(points(8)),disp(points(8)),'x point8','Fontsize',14);
text (time(points(9)),disp(points(9)),'x point3c','Fontsize',14);
subplot(2,1,2),plot(time,force,'LineWidth',1.5),xlabel('Time (s)'), ylabel('force (N)'), grid on;
text (time(points(1)),force(points(1)),'x point1','Fontsize',14);
text (time(points(2)),force(points(2)),'x point2 Fracturability','Fontsize',14);
text (time(points(3)),force(points(3)),'x point3 Hardness','Fontsize',14);
text (time(points(4)),force(points(4)),'x point4','Fontsize',14);
text (time(points(5)),force(points(5)),'x point5','Fontsize',14);
text (time(points(6)),force(points(6)),'x point6','Fontsize',14);
text (time(points(7)),force(points(7)),'x point7','Fontsize',14);
text (time(points(8)),force(points(8)),'x point8','Fontsize',14);
text (time(points(9)),force(points(9)),'x point3c','Fontsize',14);
figure;
plot(force,'LineWidth',1.5);
hold on;
grid on;
plot(disp,'r','LineWidth',1.5);
text (points(1),force(points(1)),'x point1','Fontsize',14);
text (points(2),force(points(2)),'x point2 Fracturability','Fontsize',14);
text (points(3),force(points(3)),'x point3 Hardness','Fontsize',14);
text (points(4),force(points(4)),'x point4','Fontsize',14);
text (points(5),force(points(5)),'x point5','Fontsize',14);
text (points(6),force(points(6)),'x point6','Fontsize',14);
text (points(7),force(points(7)),'x point7','Fontsize',14);
text (points(8),force(points(8)),'x point8','Fontsize',14);
text (points(9),disp(points(9))*dispscale,'x point3c','Fontsize',14);
if compute == 1
% TPA_fun_5
length1 = time(points(9))-time(points(1));
length2 = time(points(7))-time(points(6));
dispdiff4 = disp(points(1)+1:points(9)+1)-disp(points(1):points(9));
area4 = sum(force(points(1):points(9)).*dispdiff4);
dispdiff5 = disp(points(9)+1:points(4)+1)-disp(points(9):points(4));
area5 = -sum(force(points(9):points(4)).*dispdiff5); % displacement is decreasing so we need the negative sign
area1 = area4+area5;
dispdiff3 = disp(points(4)+1:points(5)+1)-disp(points(4):points(5));
area3 = sum(force(points(4):points(5)).*dispdiff3); % displacement is decreasing and force is negative
dispdiff2part1 = disp(points(6)+1:points(7)+1)-disp(points(6):points(7));
area2part1 = sum(force(points(6):points(7)).*dispdiff2part1);
dispdiff2part2 = disp(points(7)+1:points(8)+1)-disp(points(7):points(8));
area2part2 = -sum(force(points(7):points(8)).*dispdiff2part2); % displacement is decreasing
area2 = area2part1+area2part2;
Hardness = force(points(3));
Fracturability = force(points(2));
Cohesiveness = area2/area1;
Springiness = length2/length1;
Gumminess = Hardness*Cohesiveness;
Chewiness = Gumminess*Springiness;
Resilience = area5/area4;
tt = points(5)+xstep;
text (tt,force(points(3))*dispscale,['Hardness= ' num2str(Hardness)],'Fontsize',14);
text (tt,force(points(3))*dispscale-ystep,['Fracturability = ' num2str(Fracturability)],'Fontsize',14);
text (tt,force(points(3))*dispscale-2*ystep,['Cohesiveness = ' num2str(Cohesiveness)],'Fontsize',14);
text (tt,force(points(3))*dispscale-3*ystep,['Springiness = ' num2str(Springiness)],'Fontsize',14);
text (tt,force(points(3))*dispscale-4*ystep,['Gumminess = ' num2str(Gumminess)],'Fontsize',14);
text (tt,force(points(3))*dispscale-5*ystep,['Chewiness = ' num2str(Chewiness)],'Fontsize',14);
text (tt,force(points(3))*dispscale-6*ystep,['Resilience = ' num2str(Resilience)],'Fontsize',14);
[isize, ~] = size(time);
TPAoutputtime = time(point1:isize)-time(point1);
TPAoutputforce = force(point1:isize);
TPAoutputdisp = disp(point1:isize);
TPAoutputdata = [TPAoutputtime TPAoutputforce TPAoutputdisp];
STNoutputtime = time(point1:point3c)-time(point1);
STNoutputforce = force(point1:point3c)-force(point1);
STNoutputdisp = disp(point1:point3c)-disp(point1);
STNoutputstress = STNoutputforce/specimen_area;
STNoutputstrain = STNoutputdisp/specimen_height;% maybe mutiply 100 (%)
Fracture_stress = force(point2)/specimen_area;
Strength_of_material = force(point3c)/specimen_area;
E_range_start = round((point2-point1)/3);
E_range_end = round((point2-point1)/2);
[r,EModulus,b] = regression(STNoutputstrain(E_range_start:E_range_end)',STNoutputstress(E_range_start:E_range_end)');
figure
subplot(2,1,1),plot(TPAoutputtime,TPAoutputforce), xlabel('time'), ylabel('force'), grid on;
subplot(2,1,2),plot(TPAoutputtime,TPAoutputdisp), xlabel('time'), ylabel('disp'), grid on;
figure;
plot(STNoutputstrain, STNoutputstress), xlabel('strain'), ylabel('stress'), grid on;
figure
plotregression(STNoutputstrain(E_range_start:E_range_end)',STNoutputstress(E_range_start:E_range_end)');
end
2 Comments
Sriram Tadavarty
on 24 Mar 2020
Edited: Sriram Tadavarty
on 24 Mar 2020
Can you provide the excel sheet? I suspect that there is nothing read for variable time_orig from excel sheet and thus causing that error.
Answers (1)
Samatha Aleti
on 27 Mar 2020
This Error occurs when the data entered in the ranges is not numeric. In your code, data in the “timerange” is not numeric.
In this case, you can use the following syntax:
[num,txt,raw] = xlsread(___)
i.e., replace
time_orig = xlsread(filename, sheet, timerange);
with
[time_orig_num, time_orig_txt, raw] = xlsread(filename, sheet, timerange);
% Convert character cell array into numeric vector
time_orig = zeros(length(time_orig_txt),1);
for i = 1:length(time_orig_txt)
time_orig(i) = str2num(time_orig_txt{i});
end
You can refer the documentation page of “xlsread” in following link:
0 Comments
See Also
Categories
Find more on Annotations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!