Я пытаюсь перевести код приложения из 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
Есть берущие?