please help me to add legend in run figure as attached photo
4 ビュー (過去 30 日間)
古いコメントを表示
function sol= proj
clc;clf;clear;
myLegend1 = {};
rr = [0 0.5 1 1.5 2]
numR = numel(rr);
m = linspace(0,30);
alfa=0.6;
L1=2;L2=-0.1;
s=0.01;h=0.02;
k0=386; ce=3.831*10^2; mu=38.6*10^9;alfat=1.78*10^-5; rho=89.54*10^2; lamda=77.6*10^9;taw=0.5;Tnot=2.93*10^2;
c0=sqrt((lamda+2*mu)/(rho)); Betanot=(3*lamda+2*mu)*alfat; a1=mu/(lamda+2*mu);a2=(mu+lamda)/(lamda+2*mu);a3=(Betanot*Tnot)/(lamda+2*mu);omega=(rho*ce)/(k0);
a4=lamda/(lamda+2*mu);a5=(k0*omega*c0^2)/(k0);a6=(rho*ce*c0^2)/(k0);
a7=(Betanot*c0^2)/(k0); a8=a6*taw; a9=a7*taw; a10=rho*ce*taw*omega*c0^4/(k0); a11=Betanot*taw*omega*c0^4/(k0);w=rho*ce/(k0);
Z = zeros(numR, length(m)); y0 = [0,0,0,1];
options =bvpset('stats','on','RelTol',1e-5);
for i =1:numR
t= rr(i);
if i==1
solinit = bvpinit(m, y0);
else
guess = @(x)interp1(sol.x,(sol.y).',x);
solinit = bvpinit(sol.x,guess);
end
sol = bvp4c(@projfun,@projbc, solinit, options);
Z(i,:) = interp1(sol.x,sol.y(1,:),m);
i=i+1;
end
[X, Y] = meshgrid(m, rr);
shading interp;
legend('hh')
figure(1)
surf(X, Y, Z);
grid on,hold on
myLegend1{i}=['alfa= ',num2str(rr(i))];
figure(1)
legend(myLegend1)
hold on
xlabel('x');
ylabel('t');
zlabel('T');
title('Variation of velocity with Grashof number,Gr in 3D' );
grid on
shading flat;
colorbar;
% N1=zeros(1,1);
% N1=(s*L1+a4*h*L2)*sol.y(2,:)-alfa*(s*L1+a4*h*L2)*sol.y(1,:).*sol.y(2,:)-a3*sol.y(1,:)+a3*alfa*sol.y(1,:).^2;
% figure(1)
% plot(sol.x,N1)
% title('sigma xx')
% grid on,hold on
% myLegend1{i}=['alfa= ',num2str(rr(i))];
% figure(2)
% plot(sol.x,(sol.y(1,:)))
% title('Temperature')
% grid on,hold on
% myLegend2{i}=['alfa= ',num2str(rr(i))];
%
% figure(3)
% title('Temperature gradient')
% plot(sol.x,(sol.y(2,:)))
% grid on,hold on
% myLegend3{i}=['alfa= ',num2str(rr(i))];
%
% figure(4)
% plot(sol.x,L1*(sol.y(1,:)))
% title('U')
% grid on,hold on
% myLegend4{i}=['alfa= ',num2str(rr(i))];
% figure(5)
% title('V')
% plot(sol.x,L2*(sol.y(1,:)))
% grid on,hold on
% myLegend5{i}=['alfa= ',num2str(rr(i))];
%
% N2=zeros(1,1);
% N2=a1*(h*L1+s*L2)*(sol.y(2,:)-alfa*sol.y(1,:).*sol.y(2,:));
% figure(6)
% plot(sol.x,N2)
% title('sigma xy')
% grid on,hold on
% myLegend6{i}=['alfa= ',num2str(rr(i))];
%
function dy= projfun(x,y)
dy= zeros(4,1);
E = y(1);
dE = y(2);
ddE=y(3);
dddE=y(4);
dy(1) = dE;
dy(2) =ddE;
dy(3)=dddE;
dy(4)=(1/((L1^2*(s^2+a1*h^2-(x+t)^2)+L2^2*(a2*s*h))+(-(alfa*(s^2+a1*h^2-(x+t)^2))*L1^2-(alfa*(a2*s*h))*L2^2)*E))*(-(-(2*(x+t))*L1-a3*s)*dddE+((alfa*2*(x+t))*L1+2*alfa*a3*s)*E*dddE-3*(alfa*2*(x+t)*L1+2*alfa*a3*s)*dE*ddE);
end
end
function res= projbc(ya,yb)
res= [ya(1)-1;
ya(2);
yb(1);
yb(2);
];
end

0 件のコメント
回答 (1 件)
dpb
2025 年 9 月 19 日
編集済み: dpb
2025 年 9 月 19 日
function sol= proj
clc;clf;clear;
myLegend1 = {};
rr = [0 0.5 1 1.5 2];
numR = numel(rr);
m = linspace(0,30);
alfa=0.6;
L1=2;L2=-0.1;
s=0.01;h=0.02;
k0=386; ce=3.831*10^2; mu=38.6*10^9;alfat=1.78*10^-5; rho=89.54*10^2; lamda=77.6*10^9;taw=0.5;Tnot=2.93*10^2;
c0=sqrt((lamda+2*mu)/(rho)); Betanot=(3*lamda+2*mu)*alfat; a1=mu/(lamda+2*mu);a2=(mu+lamda)/(lamda+2*mu);a3=(Betanot*Tnot)/(lamda+2*mu);omega=(rho*ce)/(k0);
a4=lamda/(lamda+2*mu);a5=(k0*omega*c0^2)/(k0);a6=(rho*ce*c0^2)/(k0);
a7=(Betanot*c0^2)/(k0); a8=a6*taw; a9=a7*taw; a10=rho*ce*taw*omega*c0^4/(k0); a11=Betanot*taw*omega*c0^4/(k0);w=rho*ce/(k0);
Z = zeros(numR, length(m)); y0 = [0,0,0,1];
options =bvpset('stats','on','RelTol',1e-5);
for i =1:numR
t= rr(i);
if i==1
solinit = bvpinit(m, y0);
else
guess = @(x)interp1(sol.x,(sol.y).',x);
solinit = bvpinit(sol.x,guess);
end
sol = bvp4c(@projfun,@projbc, solinit, options);
Z(i,:) = interp1(sol.x,sol.y(1,:),m);
i=i+1;
end
[X, Y] = meshgrid(m, rr);
shading interp;
%legend('hh')
figure(1)
surf(X, Y, Z);
grid on,hold on
%myLegend1{i}=['alfa= ',num2str(rr(i))];
myLegend1=sprintf('alfa= %g',alfa);
legend(myLegend1)
hold on
xlabel('x');
ylabel('t');
zlabel('T');
title('Variation of velocity with Grashof number,Gr in 3D' );
grid on
shading flat;
colorbar;
% N1=zeros(1,1);
% N1=(s*L1+a4*h*L2)*sol.y(2,:)-alfa*(s*L1+a4*h*L2)*sol.y(1,:).*sol.y(2,:)-a3*sol.y(1,:)+a3*alfa*sol.y(1,:).^2;
% figure(1)
% plot(sol.x,N1)
% title('sigma xx')
% grid on,hold on
% myLegend1{i}=['alfa= ',num2str(rr(i))];
% figure(2)
% plot(sol.x,(sol.y(1,:)))
% title('Temperature')
% grid on,hold on
% myLegend2{i}=['alfa= ',num2str(rr(i))];
%
% figure(3)
% title('Temperature gradient')
% plot(sol.x,(sol.y(2,:)))
% grid on,hold on
% myLegend3{i}=['alfa= ',num2str(rr(i))];
%
% figure(4)
% plot(sol.x,L1*(sol.y(1,:)))
% title('U')
% grid on,hold on
% myLegend4{i}=['alfa= ',num2str(rr(i))];
% figure(5)
% title('V')
% plot(sol.x,L2*(sol.y(1,:)))
% grid on,hold on
% myLegend5{i}=['alfa= ',num2str(rr(i))];
%
% N2=zeros(1,1);
% N2=a1*(h*L1+s*L2)*(sol.y(2,:)-alfa*sol.y(1,:).*sol.y(2,:));
% figure(6)
% plot(sol.x,N2)
% title('sigma xy')
% grid on,hold on
% myLegend6{i}=['alfa= ',num2str(rr(i))];
%
function dy= projfun(x,y)
dy= zeros(4,1);
E = y(1);
dE = y(2);
ddE=y(3);
dddE=y(4);
dy(1) = dE;
dy(2) =ddE;
dy(3)=dddE;
dy(4)=(1/((L1^2*(s^2+a1*h^2-(x+t)^2)+L2^2*(a2*s*h))+(-(alfa*(s^2+a1*h^2-(x+t)^2))*L1^2-(alfa*(a2*s*h))*L2^2)*E))*(-(-(2*(x+t))*L1-a3*s)*dddE+((alfa*2*(x+t))*L1+2*alfa*a3*s)*E*dddE-3*(alfa*2*(x+t)*L1+2*alfa*a3*s)*dE*ddE);
end
end
function res= projbc(ya,yb)
res= [ya(1)-1;
ya(2);
yb(1);
yb(2);
];
end
proj;
There was a superfluous call to legend
legend('hh')
I commented out; I presume that may have just been an attempt to see if a legend would show up at all that wasn't then removed.
The real problem is that line creating the legend text is outside (after) the loop on i over the values in rr so the reference to rr(i) is out of bounds in the original code. It wouldn't have provided the desired value of the variable alfa, anyway.
myLegend1{i}=['alfa= ',num2str(rr(i))];
What you were looking for is
myLegend1=sprintf('alfa= %g',alfa);
legend(myLegend1)
instead.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Legend についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
