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

조회 수: 2 (최근 30일)
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
%%%%%%

답변 (0개)

카테고리

Help CenterFile Exchange에서 Pulse and Transition Metrics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by