You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现周期数组复用相减完成混合无线电信号降噪

信号降噪函数C语言实现方案

原代码存在的核心问题

  • 数组作为函数参数传入时会退化为指针,使用sizeof(noisy)只能获取指针字节数,无法得到数组实际长度,题目明确信号以-1为结束标记,应该通过遍历终止符计算长度
  • 硬编码中子星信号数组长度为3,适配性差,无法适配任意长度的单周期信号
  • 逻辑上使用goto跳转实现周期复用完全没有必要,直接用取模运算即可实现循环遍历star数组
  • 结尾标记错误,题目要求纯净信号以-1结束,原代码错误使用了字符串终止符\0
  • sizeof运算优先级错误,未加括号导致计算逻辑完全不符合预期

正确实现代码

#include <stdio.h>
#include <stdlib.h>

void jeltisztitas(int noisy[], int star[], int clean[]) {
    // 计算中子星单周期信号的实际长度
    int star_len = 0;
    while (star[star_len] != -1) {
        star_len++;
    }
    
    // 遍历混合信号计算纯净信号
    int i = 0;
    while (noisy[i] != -1) {
        // 取模运算自动实现star数组循环复用
        clean[i] = noisy[i] - star[i % star_len];
        i++;
    }
    // 按要求添加结束标记
    clean[i] = -1;
}

实现说明

  • 首先遍历star数组直到遇到-1,得到单周期信号的实际长度,适配任意长度的中子星周期信号
  • 遍历混合信号noisy的每个元素,通过i % star_len自动循环取star的元素,不需要额外的下标重置逻辑,代码简洁不易出错
  • 遍历完所有混合信号元素后,直接在对应位置给clean数组赋值-1作为结束标记,保证clean数组长度和noisy完全一致
  • 符合题目要求不需要额外校验计算结果的非负性,直接赋值即可

内容的提问来源于stack exchange,提问作者balazscseh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:39:02