通过执行以下操作来计算平滑数组:每个值smooth[N]
为
三个值的平均值:signal[N-1]
,signal[N]
和signal[N+1]
。
对于第一个元素 平滑,平均信号的前两个元素。对于平滑的最后一个元素,平均值 最后两个信号元素。
如何检查第一个元素和最后一个元素?使用for
- 循环错了吗?这是我的功能的样子。
void smoothArray(const int sig[], int result[], int len)
{
for (int i = 0; i < len; i++)
{
result[i] = (sig[i - 1] + sig[i] + sig[i + 1]) / 3;
}
return;
}
答案 0 :(得分:0)
如果param len 是 result 数组的长度,则无法确定第一个或最后一个元素。
该功能应该是
void smoothArray(const int sig[], int result[], int lenSig, int lenResult)
答案 1 :(得分:0)
如何检查第一个元素和最后一个元素?
通过测试循环索引来查看它是否是数组的第一个或最后一个索引:
void smoothArray(const int sig[], int result[], int len)
{
for (int i = 0; i < len; i++)
{
int sum = sig[i], n = 1;
if (i > 0)
sum += sig[i-1], n++;
if (i < len-1)
sum += sig[i+1], n++;
result[i] = sum / n;
}
}
答案 2 :(得分:0)
void smoothArray(const int sig[], int result[], int len)
{
for (int i = 0; i < len; i++)
{
// first elem
if (0 == i){
result[i] = (sig[1] + sig[0]) / 2;
continue;
}
// last elem
if (len - 1 == i){
result[i] = (sig[i] + sig[i - 1]) / 2;
continue;
}
result[i] = (sig[i - 1] + sig[i] + sig[i + 1]) / 3;
}
return;
}
答案 3 :(得分:0)
谢谢@ user3823825和@JimBalter。
要检查第一个元素以及另一个数组中两个元素的最后和平均值,需要一个包含两个if语句的for循环。
void smoothArray(const int sig[], int result[], int len)
{
for (int i = 0; i < len; i++)
{
// first elem
if (0 == i){
result[i] = (sig[1] + sig[0]) / 2;
continue;
}
// last elem
if (len - 1 == i){
result[i] = (sig[i] + sig[i - 1]) / 2;
continue;
}
result[i] = (sig[i - 1] + sig[i] + sig[i + 1]) / 3;
}
return;
}