首页 科普 资讯 养生 问答 找医院 相关问答
首页> 问答

单频正弦波模拟信号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

?
氢离子和碳酸根 氢离子和碳酸氢根 哪个反应快为什么 乌金木有哪些家具 乌金木家具如何搭配 木饰面装修多少钱一平方 关于加速度知识点的三个疑问 ...章探究加速度与力质量的关系知识点|物理加速度的5个公式 这只黑猫属于什么品种 孟买猫的免疫力如何 点火开关上的1234分别于红黄蓝黑线谁对应 万和热水器拨码开关,1234是全开的吗 点火开关1234什么意思 慢性盆腔炎怎么检查出来 怎样确诊盆腔炎 二月闹结束的征兆 手机锁屏动态壁纸怎么设置 杨颖奔跑吧兄弟的一集片酬是多少? 自由面包恰巴塔,怎么在国内红起来的 自由和面包哪一个更重要? 三星S23Ultra投屏怎么弄 手机投屏步骤教程一览 杜鹃花水大了如何补救 形容词变副词的变化规则有哪些 信用卡什么叫减免 信用卡减免什么费用 冰箱冷藏室如何调温度 档案绳怎么订 如何装订档案 怎么用针线装订档案 档案左上角直角装订方法 档案穿线装订方法 电脑网卡怎么打开电脑无线网卡怎么开启 求ubuntu下间断性识别EDGE无线上网卡的解决办法? ubuntu 有线和无线不能同时用吗 车子启动时发出滋滋响是什么原因 数字证书过期了还能用吗 数字证书过期了怎么更新 80分邮政邮票you 前门和毛主席像多少钱 手机上怎么发送pdf文件 软考中级考哪个更好 本企业字号变更同音字号,可以吗 公司注册书上重复名称怎么办 电影黑白森林中最后阿娇拿枪对着的那个人叫什么名字,有他的资料吗_百度... 金银花老桩好养活吗 3070显卡和4060显卡差距大吗? 3070显卡和4060显卡差距有多大 四六级查分忘记准考证号如何查询 忘记了四级的准考证号怎么办 独立显卡连接显示器不亮,是什么情况? 电脑插上独显卡后显示器不亮 电脑为什么会未识别到连接到NVIDIA GPU的显示器? 初中数学教资要学高中的吗 初中物理教资考高中知识吗 如何在自己公司的阿里巴巴上留自己的联系方式,不是修改,而是增加_百度... 知青岁月难以忘却,时而泘现,感恩遇见!以上词语可以吗? 看到年轻时的照片感慨的句子精选62句 微博邮箱注册失败怎么办 人民银行的应聘书 ...自知与唐三是有缘无分,无人看好,为何鬼斗罗想撮合他们? ...叫唐银,胡洌娜最后的结局是什么(就是黄金一代的胡列娜) 配一套可以玩魔兽世界配置的电脑 大概需要花多少钱? 河南体育高中分别有几所学校 玩魔兽世界配置什么电脑 组装一个玩大型3D(lol和魔兽)游戏的电脑什么样的配置好3000元左右(不含... ...A.在空气中金属铝表面迅速氧化形成保护层 B.镀锌铁表 ...A.在空气中铜合金眼镜框表面形成一层铜绿B.镀锌铁 ...A.在空气中金属铝表面迅速氧化形成保护层 B.镀锌铁表面有划损时... 红热的铁丝与冷水接触 表面形成蓝色保护层。 该蓝色保护层是Fe3O4... 魔兽世界 多彩宝石镶嵌问题 退伍后申请免学费,更改了专业,学信网信息更改不及时导致学费补助数目少... 众什么所什么的词语有哪些? 过生日当天洗澡没什么的吧? 紧急求教~~~拜谢!关于血小板总数偏高。。。 丁香养殖方法和注意事项 丁香如何养殖 北京东研二十一世纪天津分公司,北京康基净水设备 兰州分公司东研康基是不是骗子公司?让我交42000就能在兰州繁华地区小区... 芒种祝福文案(精选55句) 如何回复酒店好评 ...2年多了又漏水又漏电把屋都淹了半年了谁管啊 芒种的祝福诗句(《芒种祝福语》——浓情夏日,祝福满满!) 在北京东研二十一世纪环境科技公司,东研净水,东研环保,上海康基工作... 千丝白玉丸温馨提示 怎样判断白玉丸子熟了 如何断白玉丸子熟了 新浪微博为什么注册不了?老是提示说注册失败(RG040901)"-80"。 北京东研是个什么样的公司,东研和康基是什么关系,康基理财合法吗,东研... 芒种吉祥语和祝福语(芒种祝福语,愿你安好如初春) 请问北京东研净水机在云南有代理吗,云南什么地方?谢 白玉丸子有什么值得推荐的做法? 东研净水机太原分公司在哪? 阳谷火车站列车时刻表 和女朋友在石家庄住宾馆要结婚证吗? 温州到阳谷县动车时刻表 从山东阳谷到江西南昌乘火车应该怎么乘?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com