K、M、G、T、P、E、B,你知道都是10的多少次方吗?

本文探讨了计算机存储单位“兆”的历史与定义,指出在中国文化中,“兆”原本表示10的12次方,而在现代信息技术中常被误用为10的6次方。文章呼吁恢复“兆”的传统含义,尊重中国传统文化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着计算机硬盘制造技术的飞速发展,硬盘的存贮容量呈快速增长趋势,用来表示存贮空间的计量单位从过去的K升到M,又从M跃升至G甚至T。前几天,我们几个闲谈计算机的配置、存贮空间等问题时,说起“兆”这个单位,不免疑惑,1兆究竟等于10的几次方?通过一番追根朔源地考证,让我大开眼界。

我们目前所用的K、M、G、T等都是英文表示方法,分别是Kilo(103)、Mega(106)、Giga(109)、Tera(1012)的简写,更大的还有Peta(1015)、Exa(1018)、Bronto(1021)等。尽管现在常用的是英文表示方法,但我们博大精深的中华文化在描述大数量时也毫不逊色。东汉徐岳所著的《数术记遗》中,就相当完整地记载了中国表示数量的数词,由小到大依次为一、十、百、千、万、亿(108)、兆(1012)、京(1016)、垓(1020)、秭(1024)、穰(1028)、沟(1032)、涧(1036)、正(1040)、载(1044),此后随着佛教的传入和文化交流,又增加了极(1048)、恒河沙(1052)、阿僧只(1056)、那由他(1060)、不可思议(1064)、无量(1068)、大数(1072)等,其中万以下是十进位,万以上则为万进位。从上文可以发现,中国的数次是以104为单位晋级,而西方是以103为单位晋级,在使用习惯上有所不同,这样也造成了中英文数词对应上的不便。也许正是由于中英文数词对应上的不便,造成早期学者对“兆”这个单位的不恰当地翻译。显然,中国古代早就有“兆”这个单位,其大小也很明确,为1012。但1987年出版的科学出版社词头却标注“兆”对应于英文的“M”,其大小为106,1991年出版的《海洋行业法定计量单位使用手册》也沿用了这一用法,因此造成国内在“兆”这个单位使用上的混乱。尽管目前“兆”为106的使用已经颇为普遍,但是为尊重中国传统文化,我们应该恢复“兆”的本来面目,在台湾、新加坡、韩国及日本规定的词头体系中,“兆”的大小仍是1012,而106则称为百万。

转载自:http://blog.sina.com.cn/s/blog_490c442b0100d8tk.html

<think>嗯,用户想设计一个直接序列扩频通信系统的仿真程序,用MATLAB或者Python实现,包含各个关键模块,还要分析不同SNR下的误码率。首先,我需要回忆一下直接序列扩频的基本流程。根据用户提供的引用,仿真步骤包括信号产生、扩频、卷积编码、BPSK调制、信道传输、解调、译码和解扩。不过用户还提到了交织、Gold序列、根升余弦滤波、Nakagami-m信道这些模块,所以需要把这些都整合进去。 首先,模块划分。用户提到的模块有信源、卷积编码、交织、BPSK调制、Gold序列扩频、根升余弦滤波、Nakagami-m多径信道,接收端的话应该对应解扩、解调、解交织、卷积译码等。可能需要分步骤来实现每个模块。 接下来,参数设置。比如信源生成,可能需要生成随机的二进制数据。卷积编码的话,得确定生成多项式,比如常用的(7,5)八进制,约束长度。交织器的话,可能需要块交织,设置行和列的数量。扩频部分,Gold序列的生成,需要确定阶数,比如31位的Gold码,生成多项式。根升余弦滤波的滚降因子和过采样率也需要设定。Nakagami-m信道的参数m值,多径的时延和增益。SNR的范围是10^0到10^-6,可能需要转换成dB单位,比如从0 dB到-60 dB,但通常误码率分析是在正SNR下做的,可能需要确认用户的具体意图,这里可能是指Eb/N0的范围? 然后是具体实现。用MATLAB的话,可以用通信工具箱里的函数,比如convenc做卷积编码,vitdec做维特比译码。Gold序列可以用goldseq函数生成。根升余弦滤波器用rcosdesign。Nakagami信道可以用随机数生成器产生衰落系数。Python的话,可能需要用到numpy、scipy.signal,以及自定义的函数,比如生成Gold序列可能需要自己实现。 误码率的计算需要在不同的SNR点进行蒙特卡洛仿真,每个SNR下发送足够多的数据,统计错误比特数。但考虑到低误码率时,比如1e-6,需要大量的数据才能得到准确的结果,可能需要并行计算或者优化仿真时间。 需要注意的细节:扩频码的同步,接收端需要正确对齐扩频序列;交织和解交织的顺序是否正确;卷积编码后的比特是否需要穿孔或者调整码率;根升余弦滤波的匹配滤波是否在收发两端都应用;多径信道的模型是否正确,比如是否考虑时延扩展和相干带宽的影响。 可能的困难点:Gold序列的生成是否正确,扩频和解扩的过程是否准确,尤其是在存在多径和噪声的情况下如何保持同步。此外,Nakagami信道的建模是否正确,如何将多径效应与Nakagami衰落结合起来。可能需要将多径信道分解为多个路径,每个路径应用Nakagami衰落,然后合并。 另外,误码率的计算需要确保在接收端经过所有处理后,能够正确恢复原始数据,所以每个模块的参数设置必须一致,比如卷积编码的约束长度和生成多项式在编码和解码端要一致,交织器的行列数也要一致。 可能需要分步骤验证每个模块的正确性,比如单独测试卷积编码和译码,确保无误后再加入其他模块。同样,扩频和解扩部分可以单独测试,确认信号能够正确恢复。 关于SNR的设置,可能需要将Eb/N0转换为信噪比,考虑扩频带来的处理增益。扩频系统的处理增益会影响等效的信噪比,所以在仿真时需要正确计算每个SNR点对应的噪声功率。 最后,代码的结构可能需要模块化,每个功能写成函数,便调试和测试。比如生成信源、编码、交织、扩频、调制、滤波、信道、解调、解扩、解交织、译码等步骤分别写成函数,便于维护和修改。 可能还需要考虑过采样和符号定时同步的问题,不过如果使用根升余弦滤波器,可能已经包含了脉冲成形和匹配滤波,但需要确保收发端的滤波器匹配,避免码间干扰。 总结一下,步骤大致是: 1. 生成信源数据 2. 卷积编码 3. 交织 4. 扩频(Gold序列) 5. BPSK调制 6. 根升余弦滤波(脉冲成形) 7. 通过Nakagami-m多径信道 8. 添加高斯噪声(根据SNR) 9. 匹配滤波(根升余弦) 10. BPSK解调 11. 解扩 12. 解交织 13. 卷积译码 14. 计算误码率 每个步骤需要正确实现,参数设置合理。然后循环不同的SNR值,进行多次蒙特卡洛仿真,最后绘制误码率曲线。 用户可能还需要参考具体的代码实现,比如引用中的MATLAB代码,可能需要调整现有的代码来加入交织和多径信道等模块。或者如果用户不熟悉某些函数,可能需要详细说明如何生成Gold序列,如何设计交织器等。 总之,需要提供一个清晰的步骤指南,涵盖各个模块的实现法,参数设置的建议,以及误码率分析的法,同时注意代码的正确性和效率。</think>### 直接序列扩频通信系统仿真实现指南 #### **一、系统模块分解与实现步骤** 1. **信源生成** - 生成随机二进制序列作为原始数据 - MATLAB示例:`data = randi([0 1], 1, N_bits)` - Python示例:`data = np.random.randint(0, 2, N_bits)` 2. **信道编码(卷积编码)** - 使用生成多项式(171, 133)八进制,约束长度7 - MATLAB:`coded_data = convenc(data, trellis)` - Python:需实现卷积编码算法或使用`commpy`库 3. **交织器设计** - 块交织器设置行×列矩阵(如16×64) - MATLAB:`interleaver = reshape(coded_data, rows, cols)` - Python:`interleaved = data.reshape((rows, cols))` 4. **扩频处理** - 生成Gold序列(长度31,生成多项式[6 1 0]与[6 5 0]) - MATLAB:`goldseq = comm.GoldSequence('FirstPolynomial', [6 1 0], ...)` - Python:需实现Gold序列生成算法 5. **BPSK调制** - 映射规则:0→+1,1→-1 - 公式:$s(t) = A \cdot \cos(2\pi f_c t + \pi \cdot b(t))$ 6. **脉冲成形(根升余弦滤波)** - 滚降系数0.35,过采样率8 - MATLAB:`filter = rcosdesign(0.35, span, sps)` - Python:`scipy.signal.firwin`实现 7. **Nakagami-m多径信道** - 三径模型:时延[0, 2T, 5T],增益[0.8, 0.4, 0.2] - 衰落系数生成:$h_k = \sqrt{\frac{m}{\Omega}} \cdot \sum_{i=1}^m |n_i|^2$ 8. **接收端处理** - 匹配滤波→定时同步→解扩→解交织→维特比译码 #### **二、核心参数设置参考** | 模块 | 参数 | 典型值 | |---------------|--------------------|--------------------| | 信源 | 数据长度 | 10^4 - 10^6 bits | | 卷积编码 | 码率 | 1/2 | | Gold序列 | 序列长度 | 31 chips/bit | | 根升余弦 | 滚降系数 | 0.35 | | Nakagami | 衰落参数m | 1.5 | | 信道 | 多径延迟 | [0, 2T, 5T] | #### **三、误码率分析实现** 1. **SNR范围设置** - 将Eb/N0转换为SNR:$SNR = \frac{E_b}{N_0} \cdot \frac{R}{W}$(考虑扩频增益) 2. **蒙特卡洛仿真流程** ```matlab for snr_db = 0:-1:-6 noise_var = 10^(-snr_db/10); total_errors = 0; for iter = 1:max_iters % 完整传输链路仿真 [recv_data] = transceiver_chain(...); total_errors += sum(recv_data ~= orig_data); end ber(snr_idx) = total_errors/(max_iters*N_bits); end ``` #### **四、MATLAB/Python实现对比** **MATLAB优势**: - 内置通信工具箱(`comm`模块) - 快速原型开发(Gold序列生成函数`goldseq`) - 专业信道建模工具(`comm.RayleighChannel`) **Python实现要点**: 1. 使用`numpy`进行矩阵运算 2. `scipy.signal`实现滤波处理 3. 自定义Gold序列生成器: ```python def generate_gold(seq_length): # 实现两个m序列异或操作 ... return gold_seq ``` #### **五、关键性能影响因素** 1. 扩频增益与处理增益关系:$G_p = 10\log_{10}(N)$,N为扩频因子[^1] 2. 交织深度对抗突发错误能力:深度越大抗突发错误能力越强 3. 多径参数设置对误码率的非线性影响(需通过仿真验证) #### **六、典型仿真结果示例** 不同信噪比下的误码率曲线应呈现以下特征: $$ BER = \frac{1}{2}erfc(\sqrt{\frac{E_b}{N_0} \cdot G_p}) $$ 其中$G_p$为扩频处理增益,$erfc$为互补误差函数[^2]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值