我有一个二维数组[pixels = 100] [sensors = 50](在data.cpp文件中提供) 我需要每个像素的传感器给出的平均值。结果应存储在E [100] / 50中,其中应包含先前计算的平均值。
**编辑:问题已解决!!更改后,数组类型为short
,我得到了正确的值!感谢所有花时间回答我的查询的人,也感谢您向我介绍containers
**
这是我的代码:
#include <iostream>
#include "const.h"
#include "data.h"
#include "SortEngine.h"
#include "test.h"
#include "fonction.h"
//example of how data is defined data 2darray[pixels = 10][sensors = 3]
/* unsigned short 2darray{{ 10025 , 10192 , 10028 , 10129 , 10199 , 9843 , 9823 , 9857 , 9996 , 9873},
{10081 , 10122 , 9853 , 10060 , 10027 , 10165 , 10154 , 9853 , 9877, 9816},
{9845 , 9876 , 9954 , 9836 , 9876 , 10035 , 10094 , 9946 , 10195
, 10080}} */
void moyenne(unsigned short average[pixels])
{
unsigned short transtab[pixels][sensors];
unsigned short E[pixels];
unsigned int i,k, count;
Acquisition(0, transtab);// function to get the data from data.cpp
for(i=0; i<pixels; i++)
{
E[i] = 0;
average[i] = 0;
count = 0;
for(k=0; k<sensors; k++)
{
E[i] = E[i] + transtab[i][k];
count++;
}
if(count != 0){
average[i] = E[i]/count;
}
cout << average[i] << endl;
}
}
我一直坚持这2天,因为我没有发现问题。任何帮助,将不胜感激。谢谢。
注意:当我在代码中得到的值是平均值[0] = 10029的期望值:853(通常,代码应对transtab [0] [k]的所有元素求和(其中k <50),其中平均是按计数求和)
答案 0 :(得分:0)
问题似乎是您正在计算空数组值。 用你的代码数总是等于传感器。 您必须首先检查transtab [i] [k]!= 0
for(k=0; k<sensors; k++)
{
if (transtab[i][k] != 0) {
E[i] = E[i] + transtab[i][k];
count++;
}
}