Filter löschen
Filter löschen

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

1 Ansicht (letzte 30 Tage)
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
%%%%%%

Antworten (0)

Kategorien

Mehr zu General Applications finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by