Переписать уравнение в c - PullRequest
0 голосов
/ 14 января 2010
Gain = 255 / (1 - 10 ^ ((Refblack-Refwhite) * 0.002/0.6) ^ (Dispgamma/1.7))

Является ли это компьютерным языком, он выглядит как c, но эксклюзив или float не вычисляет Кто-нибудь может преобразовать это в с?

спасибо

Ответы [ 5 ]

7 голосов
/ 14 января 2010

Во многих языках ^ - это возведение в степень. Это <a href="http://linux.die.net/man/3/pow" rel="nofollow noreferrer">pow()</a>, который имеет следующий прототип в math.h>:

double pow(double x, double y);

Это вычисляет x, возведенное в y: th степень. Таким образом, это превращает уравнение в:

#include <math.h>

Gain = 255 / (1 - pow(10, pow(((Refblack-Refwhite) * 0.002/0.6), (Dispgamma/1.7))));
4 голосов
/ 14 января 2010

Я думаю, они означают: Gain = 255 / (1.0 - powf(10, powf((Refblack-Refwhite) * 0.002/0.6), Disgamma/1.7)))

Поскольку ^ является нормальным оператором xor в C. Так как другие использовали pow, он будет использовать только int: s и вернет int. man 3 pow для получения дополнительной информации.

3 голосов
/ 14 января 2010
gain = 255.0 / (1.0 - pow(10.0,  pow((Refblack - Refwhite) * 0.002 / 0.6, Dispgamma / 1.7) ))
2 голосов
/ 14 января 2010

Выглядит как код Matlab для меня

в C, что-то в этом роде

#include <math.h>

float Gain=0;
...
Gain = 255 / (1 - powf(10, powf(((Refblack-Refwhite) * 0.002/0.6), (Dispgamma/1.7));
2 голосов
/ 14 января 2010
Gain = 255 / (1 - pow(10 , ( pow( (Refblack-Refwhite) * 0.002/0.6) , (Dispgamma/1.7)) ) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...