Matlab / Python как linspace в C - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь перевести код приложения из MATLAB в C, чтобы повысить производительность. Для этого мне нужно написать вспомогательные функции, которые могут генерировать равноотстоящие векторы, как это делает linspace, из Matlab; https://www.mathworks.com/help/matlab/ref/linspace.html

Вот моя попытка:

#include <stdio.h>
#include <math.h>

#define PI 3.14159265
#define DEG2RAD PI / 180
#define DIMS 3

typedef struct Model {

  double radius;

} model;


void BUILD_MODEL(struct Model model);
void LINSPACE(double, double, const int, double []);

int main(){
  struct Model model;

  model.radius = 5e-3; 

  BUILD_MODEL(model);
  return 0;
}

void LINSPACE(double start, double end, const int steps, double vector[steps]){
  double diff;
  double step_length;
  diff = start - end;
  printf("Diff: %d\n", diff);
  step_length = diff/steps;
  printf("step length: %d\n", step_length);
  int i;

  for(i=0;i<steps;i++){
    vector[i] = start + i*step_length;
  };
}

void BUILD_MODEL(struct Model model){
  printf("Building model...\n");
  double linspace_x[11], linspace_y[11], linspace_z[11];

  LINSPACE(-model.radius,model.radius, 11, linspace_x);
  LINSPACE(-model.radius,model.radius, 11, linspace_y);

  printf("%d\n", linspace_x[0]);
  printf("%d\n", linspace_y[0]);
}

Распечатка при запуске вывода .exe файл становится;

Building model...
Diff: 1202590843
step length: -593486390
Diff: 1202590843
step length: -593486390
1202590843
1202590843

Что я ожидал:

Building model...
Diff: 0.01
step length: 0.00091
Diff: 0.01
step length: 0.00091
-0.005
-0.005

Есть берущие?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...