AbstractLinearFMWaveform301.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //
  2. // Academic License - for use in teaching, academic research, and meeting
  3. // course requirements at degree granting institutions only. Not for
  4. // government, commercial, or other organizational use.
  5. // File: AbstractLinearFMWaveform.cpp
  6. //
  7. // MATLAB Coder version : 5.3
  8. // C/C++ source code generated on : 27-Apr-2023 00:24:12
  9. //
  10. // Include Files
  11. #include "AbstractLinearFMWaveform301.h"
  12. #include "../rt_nonfinite.h"
  13. #include "../coder_array.h"
  14. #include <cmath>
  15. #include <math.h>
  16. // Function Definitions
  17. //
  18. // Arguments : ::coder::array<creal_T, 1U> &wav
  19. // Return Type : void
  20. //
  21. namespace coder {
  22. namespace phased {
  23. void AbstractLinearFMWaveform301::getMatchingWaveform(
  24. ::coder::array<creal_T, 1U> &wav)
  25. {
  26. array<creal_T, 1U> b_x;
  27. array<creal_T, 1U> x;
  28. array<double, 1U> b;
  29. double r;
  30. int exponent;
  31. frexp(20000.0, &exponent);
  32. b.set_size(20000);
  33. for (exponent = 0; exponent < 20000; exponent++) {
  34. r = static_cast<double>(exponent) / 2.0E+10;
  35. b[exponent] = r * r;
  36. }
  37. x.set_size(20000);
  38. for (exponent = 0; exponent < 20000; exponent++) {
  39. x[exponent].re = 0.0;
  40. x[exponent].im = b[exponent] * 3.141592653589793E+15;
  41. }
  42. b_x.set_size(20000);
  43. for (exponent = 0; exponent < 20000; exponent++) {
  44. if (x[exponent].im == 0.0) {
  45. x[exponent].re = std::exp(x[exponent].re);
  46. x[exponent].im = 0.0;
  47. } else if (std::isinf(x[exponent].im) && std::isinf(x[exponent].re) &&
  48. (x[exponent].re < 0.0)) {
  49. x[exponent].re = 0.0;
  50. x[exponent].im = 0.0;
  51. } else {
  52. r = std::exp(x[exponent].re / 2.0);
  53. x[exponent].re = r * (r * std::cos(x[exponent].im));
  54. x[exponent].im = r * (r * std::sin(x[exponent].im));
  55. }
  56. b_x[exponent].re = 0.0;
  57. b_x[exponent].im = 0.0;
  58. }
  59. for (exponent = 0; exponent < 20000; exponent++) {
  60. if (b_x[exponent].im == 0.0) {
  61. b_x[exponent].re = std::exp(b_x[exponent].re);
  62. b_x[exponent].im = 0.0;
  63. } else if (std::isinf(b_x[exponent].im) && std::isinf(b_x[exponent].re) &&
  64. (b_x[exponent].re < 0.0)) {
  65. b_x[exponent].re = 0.0;
  66. b_x[exponent].im = 0.0;
  67. } else {
  68. r = std::exp(b_x[exponent].re / 2.0);
  69. b_x[exponent].re = r * (r * std::cos(b_x[exponent].im));
  70. b_x[exponent].im = r * (r * std::sin(b_x[exponent].im));
  71. }
  72. }
  73. wav.set_size(20000);
  74. for (exponent = 0; exponent < 20000; exponent++) {
  75. double d;
  76. double d1;
  77. double d2;
  78. r = x[exponent].re;
  79. d = b_x[exponent].im;
  80. d1 = x[exponent].im;
  81. d2 = b_x[exponent].re;
  82. wav[exponent].re = r * d2 - d1 * d;
  83. wav[exponent].im = r * d + d1 * d2;
  84. }
  85. }
  86. } // namespace phased
  87. } // namespace coder
  88. //
  89. // File trailer for AbstractLinearFMWaveform.cpp
  90. //
  91. // [EOF]
  92. //