8void dsps_view(
const float *
data, int32_t len,
int width,
int height,
float min,
float max,
char view_char)
10 uint8_t *view_data =
new uint8_t[width * height];
11 float *view_data_min =
new float[width];
12 float *view_data_max =
new float[width];
15 for (
int y = 0;
y < height ;
y++) {
16 for (
int x = 0 ;
x < width ;
x++) {
17 view_data[
y * width +
x] =
' ';
20 for (
int i = 0 ; i < width ; i++) {
21 view_data_min[i] = max;
22 view_data_max[i] = min;
24 float x_step = (float)(width) / (float)len;
25 float y_step = (float)(height - 1) / (max - min);
26 float data_min = std::numeric_limits<float>::max();
27 float data_max = std::numeric_limits<float>::min();
31 for (
int i = 0 ; i < len ; i++) {
32 int x_pos = i * x_step;
33 if (
data[i] < view_data_min[x_pos]) {
34 view_data_min[x_pos] =
data[i];
36 if (
data[i] > view_data_max[x_pos]) {
37 view_data_max[x_pos] =
data[i];
40 if (view_data_min[x_pos] < min) {
41 view_data_min[x_pos] = min;
43 if (view_data_max[x_pos] > max) {
44 view_data_max[x_pos] = max;
46 ESP_LOGD(
"view",
"for i=%i, x_pos=%i, max=%f, min=%f, data=%f", i, x_pos, view_data_min[x_pos], view_data_max[x_pos],
data[i]);
47 if (
data[i] > data_max) {
51 if (
data[i] < data_min) {
56 ESP_LOGI(
"view",
"Data min[%i] = %f, Data max[%i] = %f", min_pos, data_min, max_pos, data_max);
57 ESP_LOGD(
"view",
"y_step = %f", y_step);
58 for (
int x = 0 ;
x < width ;
x++) {
59 int y_count = (view_data_max[
x] - view_data_min[
x]) * y_step + 1;
60 ESP_LOGD(
"view",
"For x= %i y_count=%i ,min =%f, max=%f, ... ",
x, y_count, view_data_min[
x], view_data_max[
x]);
61 for (
int y = 0 ;
y < y_count ;
y++) {
62 int y_pos = (max - view_data_max[
x]) * y_step +
y;
64 view_data[y_pos * width +
x] = view_char;
83 for (
int x = 0 ;
x < width ;
x++) {
87 for (
int y = 0;
y < height ;
y++) {
89 for (
int x = 0 ;
x < width ;
x++) {
90 printf(
"%c", view_data[
y * width +
x]);
95 for (
int x = 0 ;
x < width ;
x++) {
99 ESP_LOGI(
"view",
"Plot: Length=%i, min=%f, max=%f", (
int)len, min, max);
101 delete[] view_data_min;
102 delete[] view_data_max;
void dsps_view_s16(const int16_t *data, int32_t len, int width, int height, float min, float max, char view_char)
void dsps_view(const float *data, int32_t len, int width, int height, float min, float max, char view_char)
plot view