%%%%%%
%%%%%%
clear;
clc;
%%本程序采用Preisach模型,分布函数采用Gauss-Gauss函数,具体参数识别结果如下%%
%%为了便于模拟不同材料的磁滞回线,只需要改变这三个参数即可%%
sigma=10;
h0=10;
N=1/600;
%%Preisach平面参数定义%%
H=linspace(-523,523,100);
B_1=zeros(size(H)); %磁滞回线上升部分
B_2=zeros(size(H)); %磁滞回线下降部分
alpha=linspace(-523,523,100);
beta=linspace(-523,523,100);
%%计算极限磁滞回线上升部分%%
for t=1:100
B1=0;
B2=0;
for i=1:100
if beta(i)<=H(t)
for j=1:100
if alpha(j)<=beta(i)
B1=B1+N*exp(-((beta(i)-alpha(j))/2-h0)^2/2/sigma^2/h0^2)*exp(-((beta(i)+alpha(j))/2)^2/2/sigma^2/h0^2);
end
end
elseif beta(i)>H(t)
for j=1:100
if alpha(j)<=beta(i)
B2=B2+N*exp(-((beta(i)-alpha(j))/2-h0)^2/2/sigma^2/h0^2)*exp(-((beta(i)+alpha(j))/2)^2/2/sigma^2/h0^2);
end
end
end
end
B_1(t)=B1-B2;
end
plot(H,B_1);
hold on;
%%计算极限磁滞回线下降部分%%
for t=1:100
B1=0;
B2=0;
for i=1:100
if alpha(i)
for j=1:100
if beta(j)>=alpha(i)
B1=B1+N*exp(-((beta(j)-alpha(i))/2-h0)^2/2/sigma^2/h0^2)*exp(-((beta(j)+alpha(i))/2)^2/2/sigma^2/h0^2);
end
end
elseif alpha(i)>=H(t)
for j=1:100
if beta(j)>=alpha(i)
B2=B2+N*exp(-((beta(j)-alpha(i))/2-h0)^2/2/sigma^2/h0^2)*exp(-((beta(j)+alpha(i))/2)^2/2/sigma^2/h0^2);
end
end
end
end
B_2(t)=B1-B2;
end
plot(H,B_2);
grid on;