[PD-cvs] externals/iem/iemmatrix/src mtx_conv.c,1.6,1.7
Franz Zotter
fzotter at users.sourceforge.net
Wed Aug 23 18:51:36 CEST 2006
Update of /cvsroot/pure-data/externals/iem/iemmatrix/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24811
Modified Files:
mtx_conv.c
Log Message:
mtx_conv should work properly now, I tested it.
Index: mtx_conv.c
===================================================================
RCS file: /cvsroot/pure-data/externals/iem/iemmatrix/src/mtx_conv.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** mtx_conv.c 23 Aug 2006 15:17:06 -0000 1.6
--- mtx_conv.c 23 Aug 2006 16:51:34 -0000 1.7
***************
*** 184,195 ****
}
- static void convolveRow (int columns, int columns_c, t_float *x, t_float *c, t_float *y)
- {
- int n,k,count;
- for (k = 0; k < columns_c; k++)
- for (n = k, count = columns; count--; n++)
- y[n] += x[n-k] * c[k];
- }
-
static void convolveMtx (int rows, int columns, int rows_h, int columns_h,
t_float **x, t_float **h, t_float **y)
--- 184,187 ----
***************
*** 198,209 ****
int rows_y=rows+rows_h-1;
int cols_y=columns+columns_h-1;
zeroTFloatMatrix (y, rows_y, cols_y);
! for (n=0; n<rows_y; n++)
! for (m=0; m<cols_y; m++)
! for (k=n; (k<rows_h)&&(k-n<rows); k++)
! for (l=m; (l<columns_h)&&(l-m<columns); l++)
! y[n][m]+=x[k-n][l-m]*h[k][l];
}
--- 190,206 ----
int rows_y=rows+rows_h-1;
int cols_y=columns+columns_h-1;
+ int n_max, m_max;
zeroTFloatMatrix (y, rows_y, cols_y);
! for (k=0; k<rows_h; k++) {
! n_max=(rows_y<rows+k)?rows_y:rows+k;
! for (l=0; l<columns_h; l++) {
! m_max=(cols_y<columns+l)?cols_y:columns+l;
! for (n=k; n<n_max; n++)
! for (m=l; m<m_max; m++)
! y[n][m]+=x[n-k][m-l]*h[k][l];
! }
! }
}
***************
*** 280,292 ****
}
- //post("3");
// main part
readMatrixFromList (rows, columns, argv, mtx_conv_obj->x);
! //post("4");
convolveMtx (rows, columns, rows_k, columns_k,
mtx_conv_obj->x, mtx_conv_obj->k, mtx_conv_obj->y);
! //post("5");
writeMatrixIntoList (rows_y, columns_y, list_ptr+2, mtx_conv_obj->y);
- //post("6");
SETSYMBOL(list_ptr, gensym("matrix"));
SETFLOAT(list_ptr, rows_y);
--- 277,287 ----
}
// main part
readMatrixFromList (rows, columns, argv, mtx_conv_obj->x);
!
convolveMtx (rows, columns, rows_k, columns_k,
mtx_conv_obj->x, mtx_conv_obj->k, mtx_conv_obj->y);
!
writeMatrixIntoList (rows_y, columns_y, list_ptr+2, mtx_conv_obj->y);
SETSYMBOL(list_ptr, gensym("matrix"));
SETFLOAT(list_ptr, rows_y);
More information about the Pd-cvs
mailing list