Effacer les filtres
Effacer les filtres

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

1 vue (au cours des 30 derniers jours)
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
%%%%%%

Réponses (0)

Catégories

En savoir plus sur General Applications dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by