Clear Filters
Clear Filters

Why does my code produces a matrix [table] has 3 rows are the same as I run multiple simulations for a Simulink model?

1 view (last 30 days)
My model 'notch' is a microgrid and I have three phase currents [i1,i2, i3] measured and sent to the workspace the with wavelet decomposition. It is to produce a signal signature for the three currents which is [x]. I want to change the parameters of each simulation as in the code. For example, then store the signal signature[ x ]in a matrix [table],
I made a function 'F' which takes the three currents as inputs and produces x as output.
But as I run the code down the three rows in [table] are identical.
I do not know what the problem is. Can anyone help me?
Thanks in advance.
%%%%%%%%%%%%%
mdl = 'notch';
open_system(mdl)
find_system(mdl);
mass=3:-1:1
m = length(mass);
for i = m:-1:1
a=4-i;
simin(i) = Simulink.SimulationInput(mdl);
simin(i) = simin(i).setBlockParameter('notch/Lin1','Length',num2str(mass(i)));
simin(i) = simin(i).setBlockParameter('notch/Lin2','Length',num2str(mass(a)));
simin(i) = simin(i).setBlockParameter('notch/Three-Phase Fault','FaultA','on')
simin(i) = simin(i).setBlockParameter('notch/Three-Phase Fault', 'FaultResistance',num2str(mass(i)));
out(i) = sim(simin(i));
fi=@F; %calling function F
y = fi( i1,i2,i3);
table(i,:)=y;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function x = F(i1,i2,i3)
currentA = i1;
currentB = i2;
currentC = i3;
wv = 'db4';
Fs = 3200;
fb = dwtfilterbank('Wavelet',wv,'Level',4,'SamplingFrequency',Fs);
[cA1, LA1] = wavedec(currentA, 1, 'db4');
[cB1, LB1] = wavedec(currentB, 1, 'db4');
[cC1, LC1] = wavedec(currentC, 1, 'db4');
[cA2, LA2] = wavedec(currentA, 2, 'db4');
[cB2, LB2] = wavedec(currentB, 2, 'db4');
[cC2, LC2] = wavedec(currentC, 2, 'db4');
[cA3, LA3] = wavedec(currentA, 3, 'db4');
[cB3, LB3] = wavedec(currentB, 3, 'db4');
[cC3, LC3] = wavedec(currentC, 3, 'db4');
[cA4, LA4] = wavedec(currentA, 4, 'db4');
[cB4, LB4] = wavedec(currentB, 4, 'db4');
[cC4, LC4] = wavedec(currentC, 4, 'db4');
dA1 = detcoef(cA1, LA1, 1);
dB1 = detcoef(cB1, LB1, 1);
dC1 = detcoef(cC1, LC1, 1);
dA2 = detcoef(cA2, LA2,2);
dB2 = detcoef(cB2, LB2, 2);
dC2 = detcoef(cC2, LC2, 2);
dA3 = detcoef(cA3, LA3, 3);
dB3 = detcoef(cB3, LB3, 3);
dC3 = detcoef(cC3, LC3, 3);
%level 4 detail
dA4 = detcoef (cA4, LA4, 4);
dB4 = detcoef(cB4, LB4, 4);
dC4 = detcoef(cC4, LC4, 4);
aA4 = appcoef(cA4, LA4,'db4', 4);
aB4 = appcoef(cB4, LB4,'db4', 4);
aC4 = appcoef(cC4, LC4,'db4' ,4);
aA1 = appcoef(cA1, LA1,'db4', 1);
aB1 = appcoef(cB1, LB1,'db4', 1);
aC1 = appcoef(cC1, LC1,'db4' ,1);
x=[aA4 ;dA1 ; dA2 ; dA3 ; dA4 ; aB4; dB1 ; dB2 ; dB3 ; dB4; aC4; dC1 ; dC2 ; dC3 ; dC4];
end
%%%%%%

Answers (0)

Categories

Find more on General Applications in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!