首页

文章

单频正弦波模拟信号PCM二进制折叠编码怎么实现,很急的,拜托高手了

发布网友 发布时间:2024-10-24 11:24

我来回答

2个回答

热心网友 时间:2024-10-26 10:17

这是我写的一个C++实现方案,希望对你有帮助
#include <iostream>
#include <cmath>
using namespace std;

int main(){
const int sect = 8; //将输入输出的范围分为8段.

const int startingVol[sect+1] = {0,16,32,64,128,256,512,1024,2048};
// 每段的起始值

const int quanIntvl[sect] = {1,1,2,4,8,16,32,64};
//将每大段内为16个小段后,依次对应的每个小段之间的间隔
//如64与32之间的大段分为16段,每小段之间的间隔为2

int pcmCode[sect] = {0,0,0,0,0,0,0,0}; // 8位的PCM编码。

int startPoint; //计算量化后的值时使用到的每大段起始值数组的下标

int finePoint; //计算量化后的值时使用到的每小段间隔数组的下标

const double pi=3.14159265358979;

int quanValue; // 最后量化出来得到的值

int quanError; //量化引起的误差

for(double j=0;j<=20;j++) {

int sampleValue = 300*sin((j/10)*pi)+500*sin((j/3)*pi)-400*sin((j/8)*pi); //几个sin函数叠加产生一个虚拟的波形

int pcmInd = 0; //表示第几位编码

int low = 0;

int high = sect;

int mid;

int loopInd1 = 0; //编码第二到第三位所使用的循环次数

int loopInd2 = 0; //编码第四到第八位所使用的循环次数

(sampleValue >= 0) ? (pcmCode[pcmInd] = 0) : (pcmCode[pcmInd] = 1); //获取PCM编码的第一位,即采样值的符号

sampleValue = abs(sampleValue); //将采样值取为其绝对值,以保证后面程序的顺利运行

//其余位编码的获取采用二分搜索
//首先编码第2到第4位
while(loopInd1 < 3) //因为知道输入分为8段,所以设定二分搜索的循环次数为3次即可将第2到第4位编码完成
{
mid = (low + high)/2;

if(sampleValue < startingVol[mid])
{
pcmCode[++pcmInd] = 0;
high = mid;
startPoint = mid - 1 ;

}
else
{
pcmCode[++pcmInd] = 1;
low = mid;
startPoint = mid;
}

loopInd1++;
}

//编码剩下的4位

low = 0;

high = 16; //每段内平均分为16个小段

//仍然使用二分搜索
while(loopInd2 < 4)
{
mid = (low + high)/2;

//在程序运行中显示下列语句来使得编码过程更加直观
quanValue = startingVol[startPoint] + mid * quanIntvl[startPoint];

cout<<startingVol[startPoint]<<" + "<<quanIntvl[startPoint]<<" * "<<mid<<" = "
<<quanValue <<" ? "<<sampleValue<<endl;

if(sampleValue < startingVol[startPoint] + mid * quanIntvl[startPoint])
{
pcmCode[++pcmInd] = 0;
high = mid;
finePoint = mid -1;
}

else if(sampleValue > startingVol[startPoint] + mid * quanIntvl[startPoint])
{
pcmCode[++pcmInd] = 1;
low = mid;
finePoint = mid;
}
else
{
finePoint = mid;
break;
}

loopInd2++;

}

quanValue = startingVol[startPoint] + finePoint * quanIntvl[startPoint];

if((sampleValue-quanValue)>=quanIntvl[startPoint] / 2)
{
quanValue += quanIntvl[startPoint] / 2;
}
else if((quanValue-sampleValue)>=quanIntvl[startPoint] / 2)
{
quanValue -= quanIntvl[startPoint] / 2;
}
//对量化结果进行最后的调整以更加靠近采样值

quanError = abs( sampleValue - quanValue);
cout<<"采样值: "<<sampleValue<<endl;
cout<<"最终值: "<<quanValue<<endl;
cout<<"实际误差: "<<quanError<<endl;
cout<<"PCM编码为: ";

for(int i = 0; i < 8; i++)

{
cout<<pcmCode[i]<<" ";
}

cout<<endl;

}

return 0;
}

热心网友 时间:2024-10-26 10:11

?
石料加工服务可以全部交给第三人完成吗 山东沃尔德集团集团所辖公司介绍 齐鲁银行无忧贷和市民贷哪个好 什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 如何在自己公司的阿里巴巴上留自己的联系方式,不是修改,而是增加_百度... 知青岁月难以忘却,时而泘现,感恩遇见!以上词语可以吗? 看到年轻时的照片感慨的句子精选62句 微博邮箱注册失败怎么办 人民银行的应聘书 ...自知与唐三是有缘无分,无人看好,为何鬼斗罗想撮合他们? ...叫唐银,胡洌娜最后的结局是什么(就是黄金一代的胡列娜) 配一套可以玩魔兽世界配置的电脑 大概需要花多少钱? 河南体育高中分别有几所学校 玩魔兽世界配置什么电脑 组装一个玩大型3D(lol和魔兽)游戏的电脑什么样的配置好3000元左右(不含... ...A.在空气中金属铝表面迅速氧化形成保护层 B.镀锌铁表 ...A.在空气中铜合金眼镜框表面形成一层铜绿B.镀锌铁 ...A.在空气中金属铝表面迅速氧化形成保护层 B.镀锌铁表面有划损时... 红热的铁丝与冷水接触 表面形成蓝色保护层。 该蓝色保护层是Fe3O4... 魔兽世界 多彩宝石镶嵌问题 退伍后申请免学费,更改了专业,学信网信息更改不及时导致学费补助数目少... 众什么所什么的词语有哪些? 过生日当天洗澡没什么的吧? 紧急求教~~~拜谢!关于血小板总数偏高。。。 丁香养殖方法和注意事项 丁香如何养殖 北京东研二十一世纪天津分公司,北京康基净水设备 兰州分公司东研康基是不是骗子公司?让我交42000就能在兰州繁华地区小区... 芒种祝福文案(精选55句) 如何回复酒店好评 ...2年多了又漏水又漏电把屋都淹了半年了谁管啊 芒种的祝福诗句(《芒种祝福语》——浓情夏日,祝福满满!) 在北京东研二十一世纪环境科技公司,东研净水,东研环保,上海康基工作... 千丝白玉丸温馨提示 怎样判断白玉丸子熟了 如何断白玉丸子熟了 新浪微博为什么注册不了?老是提示说注册失败(RG040901)"-80"。 北京东研是个什么样的公司,东研和康基是什么关系,康基理财合法吗,东研... 芒种吉祥语和祝福语(芒种祝福语,愿你安好如初春) 请问北京东研净水机在云南有代理吗,云南什么地方?谢 白玉丸子有什么值得推荐的做法? 东研净水机太原分公司在哪? 阳谷火车站列车时刻表 和女朋友在石家庄住宾馆要结婚证吗? 温州到阳谷县动车时刻表 从山东阳谷到江西南昌乘火车应该怎么乘?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com