00001
00002
00003
00004
00005
00006
00007 #include "scripts.h"
00008
00009 void abs_phase_script(void)
00010 {
00011 mgk_data_type rtype,itype;
00012 int size;
00013 float *re = mgk_receive(0,&rtype);
00014 float *im = mgk_receive(1,&itype);
00015 printf("abs+phase\n");
00016 fflush(stdout);
00017 if((re && im) &&
00018 (rtype == itype) &&
00019 (rtype == (T_BUFFER | T_FLOAT)) &&
00020 (mgk_buffer_size(re) == mgk_buffer_size(im)) &&
00021 ((size = (mgk_buffer_size(re) / sizeof(float))) > 0)) {
00022 int i;
00023 for(i = 0; i < size; i++) {
00024 float magn = (float)(sqrt((re[i] * re[i]) + (im[i] * im[i])));
00025 float phase = (float)(atan2(im[i],re[i]) * 180.0 / M_PI);
00026 re[i] = magn;
00027 im[i] = phase;
00028 }
00029 mgk_propagate(0,re,rtype);
00030 mgk_propagate(1,im,itype);
00031 }
00032 }
00033