为什么我使用figure功能分开作图会失效?

14 次查看(过去 30 天)
JY Chen
JY Chen 2023-7-27
评论: Angelo Yeo 2023-7-27
如标题所述,我在使用matlab online对我的参数拟合结果进行展示时,为了直观方便,我画了三张图来反应我所采用的算法的效果。但是中途再另一个实时文本内使用控件功能进行另一个测试后,我回到原先的文本,运行后发现,本应出现的Figure1、2、3变成了合在同一张图里的Figure4。不知这是什么原因?
以下是所述的异常绘图结果:
以下是中间用来做其他测试的、带有控件的另一个实时文本:
clearvars -except Hw Bw x2
%clear
clc
%%初始化参数
%x0=[13 ,12, 81, 0.091, 0.0061];
x1=[1.2e-3 ,1.2*1e06, 1600, 1200, 0.3];
x0=x2./x1;
alpha_u0=x0(1);
%J-A模型5个参数(初始值的归一值)
a1_u=x0(1);
Ms_u=x0(2);
a_u=x0(3);
k_u=x0(4);
c_u=x0(5);
%J-A模型5个参数(初始值)
u0=4*pi*1e-07; %真空磁导率
flag_conv = 0;
nk=1;
%%导入实测的B-H曲线
%H00=Hw;
%B0=Bw;
%L0=length(B0);
a10=x1(1);
Ms0=x1(2);
a0=x1(3);
k0=x1(4);
c0=x1(5);
%饱和磁密Bs=1.508T
Bs=1.508;
m1=max(Bw)/Bs;
m2=min(Bw)/Bs;
Lw=length(Bw);
hs=1e-2;
%提取单一周期的磁滞回线数据
r1=1;
r2=1;
r3=1;
for i=1:(Lw-1)
bh=Bw(i+1)-Bw(i);
if bh>=0
r1=r1+1;
else
break;
end
end
r2=r1;
for i=r1:(Lw-1)
bh=Bw(i+1)-Bw(i);
if bh<=0
r2=r2+1;
else
break;
end
end
r3=r2;
for i=r2:(Lw-1)
bh=Bw(i+1)-Bw(i);
if bh>=0
r3=r3+1;
else
break;
end
end
B=Bw(r1:r3);
H0=Hw(r1:r3);
L=length(B);
x0(1)=;
p_u=x0;
p=p_u.*x1;
Hc=JA_BH(p,B,hs);
fit=((1/L)^(1/nk)).*norm(H0-Hc,nk);
figure(1)
%plot(H0,B,'-','LineWidth',2,H5,B,'--x');
plot(H0,B,'--','LineWidth',2);
hold on
plot(Hc,B);
xlabel('$H/(A/m)$',"Interpreter","latex");
ylabel('$B/T$',"Interpreter","latex");
legend('$Measured$','$JA-PSO$',"Interpreter","latex");
title('$Measured\,\&\,Modeled\,B-H\,Curves$',"Interpreter","latex");
grid on
grid minor
以下是最开始那个文本的绘图代码:
figure(1)
%plot(H0,B,'-','LineWidth',2,H5,B,'--x');
plot(H0,B,'--','LineWidth',2);
hold on
plot(H5,B);
xlabel('$H/(A/m)$',"Interpreter","latex");
ylabel('$B/T$',"Interpreter","latex");
legend('$Measured$','$JA-PSO$',"Interpreter","latex");
title('$Measured\,\&\,Modeled\,B-H\,Curves$',"Interpreter","latex");
grid on
grid minor
figure(2)
set(gcf,'color','white');
plot(1:length(ff),ff)
xlabel('$Times\,of\,Iterations$',"Interpreter","latex");
ylabel('$Norm-1\,of\,Error\,per\,Cycle\,(A/m) $',"Interpreter","latex");
title('$The\,Convergence\,of\,Parameter\,Eploration$',"Interpreter","latex");
grid on
grid minor
figure(3)
plot(0.00001:0.00001:(0.00001*length(B)),[H0;H5]);
xlabel('$time/s$',"Interpreter","latex");
ylabel('$H/(A/m)$',"Interpreter","latex");
legend('$Measured$','$JA-PSO$',"Interpreter","latex");
title('$Measured\,\&\,Modeled\,H\,Waveforms$',"Interpreter","latex");
grid on
grid minor
  2 个评论
Angelo Yeo
Angelo Yeo 2023-7-27
您能用一段简单的代码重现您遇到的问题吗?
JY Chen
JY Chen 2023-7-27
我在试图写一段简单代码重现这个问题的时候发现MATLAB online会话超时重连了,然后我重新上去运行原始脚本发现这个问题没有再次出现。我怀疑是之前运行第二个实时脚本的时候引发了什么与脚本内的控件有关的bug。感谢您的提醒。

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 图形对象的标识 的更多信息

产品


版本

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!