MATLAB코드를 C#에서 작동하게 컨버팅하는 일을 하고 있다.
가끔 MATLAB에서는 기본 함수로 제공을 하지만 C#에서는 찾아볼 수 없는 함수들이 존재하는데
이런 경우엔 정말 갑갑하다.
C#엔 없는 함수가 출현하면,
뭐 방법이 있나.. 짜야지...뭐 각설하고, 지금까지 짜둔 함수들을 정리해보려고 한다.
private void M_filter(double[] a, double[] b, double[] x, ref double[] y)
{
int i, j, ord;
ord = 2; //ORDER
y[0] = b[0] * x[0];
for (i = 1; i < ord + 1; i++)
{
y[i] = 0.0;
for (j = 0; j < i + 1; j++)
y[i] = y[i] + b[j] * x[i - j];
for (j = 0; j < i; j++)
y[i] = y[i] - a[j + 1] * y[i - j - 1];
}
for (i = ord + 1; i < x.Length; i++)
{
y[i] = 0.0;
for (j = 0; j < ord + 1; j++)
y[i] = y[i] + b[j] * x[i - j];
for (j = 0; j < ord; j++)
y[i] = y[i] - a[j + 1] * y[i - j - 1];
}
return;
}
이상의 자세한 설명은 생략한다.
(사실 수학적 내용은 잘 모른다...)
함수 인자로 받은 y배열에 결과를 리턴한다.
matlab함수는 1개 이상의 리턴값을 가진 함수가 많아 주로 ref를 이용하여 결과 배열 혹은 변수를 미리 선언해 넘겨준다.
ps. 답변이 가능할지는 모르지만 궁금한 사항은 댓글 남기시면 가능한한 답변하도록 노력하겠다.
Posted on 2011/09/25 14:46 / Filed Under Coding/MATLAB in C#
글 주소 : http://blog.sam-chon.com/blog/4
댓글을 달아 주세요