% Script for prediction currents
% Major Hysteresis Loop  between -3 and 3 amps

I1 = [-3:0.4:3];
I2 = [3:-0.4:-3];

I_major = [I1,I2];

% Preisach Training Currents

step_mid = 0.6;
I_mid = -2.4:step_mid:2.4;
Istep =  0.12;

for i = 1:length(I_mid)
    downRamp_mid = (I_mid(i):Istep:I_mid(i)+step_mid);
    upRamp_mid   = (I_mid(i)+step_mid:-Istep:I_mid(i)-step_mid);
    downRamp_mid2 = (I_mid(i)-step_mid:Istep:I_mid(i));
    Imag_mid(i,:) = [downRamp_mid(1:end-1), upRamp_mid, downRamp_mid2(2:end)];
end

% Preisach Training Currents.txt

data_file = 'Preisach Training Currents.txt';
f_title = '   Preisach Training Currents: \n' ;

fidA = fopen(data_file,'w');
for i = 1:length(I_mid)
    fprintf(fidA,['I_mid', num2str(i), ' = ']);
    for j = 1:length(Imag_mid(i,:))
        fprintf(fidA,[num2str(Imag_mid(i,j)), ',']);
    end
    fprintf(fidA,[' Length = ', num2str(length(Imag_mid(i,:))), '\n']);
end

fclose(fidA);

s = size(Imag_mid);

figure('units','normalized','outerposition',[0 0 0.9 0.9]) 
hold on
for i = 1:s(1)
j = 1:s(2);
plot(j, Imag_mid(i,:), mm(i));
end
xlabel('Measurement #')
ylabel('Current (A)')
title('Preisach Training Currents')
legend(string(I_mid))

%% Make Prediction Currents
a = [-1.5, -0.6, 1.2, -3.0, 0.6];
b = [-0.5, 0.6, 2.4, -2.4, 1.6];
n = 15;
for i = 1:length(a)
I_pred(i,:)= a(i) + (b(i)-a(i)).*rand(n,1);
end
a = -3.0;
b= 3.0;
I_pred(4,:) = a + (b-a)*rand(n,1);
s = size(I_pred);

figure('units','normalized','outerposition',[0 0 0.9 0.9]) 
hold on
for i = 1:s(1)
j = 1:s(2);
plot(j, I_pred(i,:), mm(i));
end
xlabel('Measurement #')
ylabel('Current (A)')
title('Prediction Currents')
legend(string(I_pred))

data_file = 'Preisach Prediction Currents.txt';
f_title = '   Preisach Prediction Currents: \n' ;

fidB = fopen(data_file,'w');
for i = 1:s(1)
    fprintf(fidB,['I_pred', num2str(i), ' = ']);
    for j = 1:length(I_pred(i,:))
        fprintf(fidB,[num2str(I_pred(i,j)), ',']);
    end
    fprintf(fidB,[' Length = ', num2str(length(I_pred(i,:))), '\n']);
end

fclose(fidB);