Добрый день!
Разработал медианный фильтр, проверил его алгоритм в Matlab,
однако при переносе в ФБ C# возникает проблемы при работе - спустя несколько значений фильтр перестает работать.
Вот пример:
Кто сталкивался с такой проблемой? Опрос ФБ настроен на изменение входов.Код:using System; using MasterSCADA.Script.FB; using MasterSCADA.Hlp; using FB; using FB.FBAttributes; using System.Linq; [FBRetain] public partial class ФБ : ScriptBase { public static int count=0;//счетчик public static int order=15;//порядок-количество чисел в окне public static double data; public bool flag=false; public double temp=0; public double[] buffer=new double[15];// size = order public int index=8; public int num=0; public override void Start() { for(int i=0;i<order;i++) { buffer[i]=0; } } public override void Execute() { if(flag==true) { for(int i=0;i<order-1;i++)//0 1 { buffer[i]=buffer[i+1]; } if(u.HasValue) { buffer[order-1]=Convert.ToDouble(u); } sort(); data=buffer[index];// buffer median val } if((count==order)&&(flag==false)) { flag=true; sort(); data=buffer[index];// buffer median val } if ((count<order)&&(flag==false)) { if(u.HasValue) { buffer[count]=Convert.ToDouble(u); count++; } } y=data; num++; Параметр1=num; }// end of execute public void sort() { double temp=0; for(int i=0;i<order-1;i++)//0 1 { if(buffer[i]>buffer[i+1]) { temp=buffer[i+1]; buffer[i+1]=buffer[i]; buffer[i]=temp; } ; } } } // end of FB




Ответить с цитированием