Error - Vectors must be the same length
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Shimon Katzman
le 24 Nov 2019
Commenté : Star Strider
le 26 Nov 2019
Hi everyone,
This is very wierd.
I entered this code to plot a (epscmv, cdivd) graph and there are two problems:
1) sometimes it works and draws the graph but most of the time it errors:
Error using plot
Vectors must be the same length.
Error in Untitled (line 30)
plot(epscmv, cdivd
2) the graph has to finish at epsAtMmax which is 2.7671 but it stoppes at 3.5 instead..
Thank you for your help.
b=300; %mm
d=400; %mm
fc=40; %Mpa
Ecm=22*(fc/10)^0.3*10^3; %Mpa
Es=200000; %Mpa
As=2400; %mm^2
fy=400; %Mpa
epsc1=min(2.8/1000,0.7*fc^0.31/1000);
epscu=3.5/1000;
k=1.05*Ecm*epsc1/fc;
epscmv = linspace(0.05, 3.5, 500)*1E-3;
for i=1:numel(epscmv);
epscm = epscmv(i);
funC=@(epsc) (k*epsc/epsc1-(epsc/epsc1).^2)./(1+(k-2)*epsc/epsc1);
compression=@(c) b*fc*c/epscm*integral(funC,0,epscm)/1000;
tension=@(c) min(Es*(d-c)/c*epscm*As/1000,fy*As/1000);
c(i)=fsolve(@(c) compression(c)-tension(c),1);
funM=@(epsc)(k*epsc./epsc1-(epsc./epsc1).^2)./(1+(k-2)*epsc./epsc1).*(d-c(i)+(c(i)./epscm).*epsc);
M(i)=b*fc*c(i)/epscm*integral(funM,0,epscm)/1000000;
phi(i)=epscm/c(i);
cdivd(i)=c(i)/d;
if (i > 1) & (M(i)<M(i-1))
break;
end
end
[Mmax,idx]=max(M) %[kNm]
phiAtMmax=phi(idx) %[1/mm]
epsAtMmax=epscmv(idx)*1000 %[promil]
plot(epscmv, cdivd)
grid on
xlabel('epsilon cm')
ylabel('c/d')
Réponse acceptée
Star Strider
le 24 Nov 2019
Your code does what you want it to, including the if block, and appears to produce the desired results:
Mmax =
342.497032418162
idx =
394
phiAtMmax =
2.50775914909749e-05
epsAtMmax =
2.76713426853707
Solve the plot error by limiting the ranges on both arguments:
plot(epscmv(1:idx), cdivd(1:idx))
That worked when I ran it, and the plot stops at the appropriate value of ϵ. Your code does what you want it to, including the if block, and appears to produce the desired results:
Mmax =
342.497032418162
idx =
394
phiAtMmax =
2.50775914909749e-05
epsAtMmax =
2.76713426853707
Solve the plot error by limiting the ranges on both arguments:
plot(epscmv(1:idx), cdivd(1:idx))
That worked when I ran it, and the plot stops at the appropriate value of ϵ.
4 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur 2-D and 3-D Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!