# -*- coding: UTF-8 -*- import numpy as np import matplotlib.pyplot as plt # 设置信道错误概率p和码率R p = 0.01 R = 1000 # 设置典型集参数epsilon和n epsilon = 0.01 n = 10 # 生成随机序列 np_random_sequence = np.random.randint(0, 10000, size=R) # 接收比特 data = np.zeros((R, n)) data[np.where(np.random.rand(R, n) < p)] = 1 # 进行解码 decoded = np.zeros((R, n)) decoded[np.where(np.random.rand(R, n) < p)] = 1 # 仿真性能 P_a = np.sum(data != decoded, axis=1) / n * 100 P_b = np.sum(data != decoded, axis=1) / n * 100 # 绘制性能曲线 plt.plot(np.arange(1, R+1, 1) * R / n, P_a, label='A') plt.xlabel('Time (s)') plt.ylabel('错误率') plt.title('Random 编码 (p = 0.01, R = 1000)') plt.show() # 绘制性能曲线 plt.plot(np.arange(1, R+1, 1) * R / n, P_b, label='B') plt.xlabel('Time (s)') plt.ylabel('错误率') plt.title('Random 编码 (p = 0.01, R = 1000)') plt.show()

时间: 2024-04-28 14:19:33 浏览: 12
这段代码实现了一个随机编码方案在二元对称信道上的仿真。首先通过设置信道错误概率p和码率R来生成一个随机序列,然后模拟在二元对称信道上传输过程中的错误情况,最后统计错误率并绘制性能曲线。 具体来说,代码中的`np.random.randint(0, 10000, size=R)`生成了一个长度为R的随机序列,代表发送的比特流。然后根据信道错误概率p,通过`data[np.where(np.random.rand(R, n) < p)] = 1`生成了一个随机的接收比特矩阵data,其中1表示出现了错误,0表示没有错误。接着进行解码,使用`decoded[np.where(np.random.rand(R, n) < p)] = 1`生成了一个随机的解码结果矩阵decoded,同样1表示出现了错误,0表示没有错误。 接下来计算了仿真性能,通过`np.sum(data != decoded, axis=1) / n * 100`计算出了每个比特位置上的错误率,并乘以100得到了误码率P_a和漏码率P_b。最后通过`plt.plot()`函数绘制了误码率和漏码率随时间的变化曲线。 需要注意的是,这段代码中的一些参数值是随意设置的,实际应用中需要根据具体的信道和编码方案进行调整。
相关问题

# coding: utf-8 import sys, os from catdog.deep_convnet import DeepConvNet sys.path.append(os.pardir) # 为了导入父目录而进行的设定 import numpy as np import matplotlib.pyplot as plt from input_data import load_data

这段代码是一个 Python 脚本的开头部分,主要包括导入必要的库和模块,以及设置导入路径。具体来说,该脚本导入了 sys、os、numpy、matplotlib.pyplot 和 load_data 函数。其中,sys 和 os 模块用于设置导入路径,numpy 用于处理数组数据,matplotlib.pyplot 用于绘制图表。另外,该脚本还导入了一个 DeepConvNet 类,用于创建深度卷积神经网络模型。该类定义在 catdog.deep_convnet 模块中,因此需要将该模块所在的路径添加到导入路径中。最后,该脚本调用了 load_data 函数,用于加载训练集和测试集数据。

#-*- coding:utf-8 -*-import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 10, 1000) y =np.sin(x) z= np.cos(x)k=× plt.subplot(221)#第一行的左图 plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) plt.subplot(222)#第一行的右图 plt.plot (x,z,"b--", label="$cos (x)$")p1t.subplot(212)#第二整行plt.plot(x,k, "g--",label="$x$") plt.legend() plt.savefig('image.png',dpi=100)#dpi是指保存图像的分辨率,默认值为80plt.show()是否有错

这段代码有两个小错误: 1. 第 4 行的 `y =np.sin(x)` 应该是 `y =np.sin(x)`,即变量名和 `x` 一致。 2. 第 7 行的 `k=×` 应该是 `k=x`,即变量名和 `x` 一致。 另外,第 9 行的 `plt.subplot(221)` 和第 11 行的 `plt.subplot(222)` 中的括号应该是英文括号,而不是中文括号。 修改后的正确代码如下: ``` # -*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 1000) y = np.sin(x) z = np.cos(x) k = x plt.subplot(221) # 第一行的左图 plt.plot(x, y, label="$sin(x)$", color="red", linewidth=2) plt.subplot(222) # 第一行的右图 plt.plot(x, z, "b--", label="$cos(x)$") plt.subplot(212) # 第二整行 plt.plot(x, k, "g--", label="$x$") plt.legend() plt.savefig('image.png', dpi=100) # dpi是指保存图像的分辨率,默认值为80 plt.show() ``` 注意,代码中的第 9 行和第 11 行可以改为: ``` plt.subplot(2, 2, 1) # 第一行的左图 plt.subplot(2, 2, 2) # 第一行的右图 ``` 这样更符合 subplot 函数的使用方法,而且避免了括号的问题。

相关推荐

#coding:utf8 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np sns.set_style('darkgrid') import matplotlib.font_manager as fm myfont=fm.FontProperties(fname=r'./data/simhei.ttf') #请完善下面的函数 def push_week(new_data): ############ Begin ############ new_data=new_data[new_data['type']==4].copy() #选取样本 new_data['weekdays'] = pd.to_datetime(new_data['time']).apply(lambda x: x.weekday()+1) #时间转化 week_days = new_data.groupby('weekdays')['user_id'].count() #统计购买次数 fig=plt.figure(figsize=(8,6)) #设置大小 bar_width = 0.33 # 设置宽度 plt.bar(week_days.index.values , week_days.values, bar_width, label='下单的次数') plt.xlabel('时间',fontproperties=myfont,fontsize=9) plt.ylabel('数量',fontproperties=myfont,fontsize=9) plt.title('一周内每天的下单情况',fontproperties=myfont,fontsize=12) plt.xticks(week_days.index.values, ('周一', '周二', '周三', '周四', '周五', '周六', '周日'),fontproperties=myfont,fontsize=9) plt.ylim(0,300) plt.legend(prop=myfont) ############ End ############ plt.savefig('./task2/task2_week.png') plt.close(fig) def push_date(new_data): new_data = new_data[(new_data['type'] == 4) & (pd.to_datetime(new_data['time']) < pd.to_datetime('2016-03-01'))].copy() #选出2016年数据 new_data['days'] = [x.day for x in pd.to_datetime(new_data['time'])] #选出天数 renew=new_data.groupby('days')['sku_id'].count() fig = plt.figure(figsize=(8, 6)) plt.plot(renew.index.values,renew.values,label='购买次数') plt.xlabel('天数',fontproperties=myfont,fontsize=9) plt.ylabel('次数',fontproperties=myfont,fontsize=9) plt.title('购买量和月内日期的关系',fontproperties=myfont,fontsize=12) plt.legend(prop=myfont) ############ End ############ plt.savefig('./task2/task2_date.png') plt.close(fig) 报错src/task2_test.py:22: FutureWarning: The pandas.datetime class is deprecated and will be removed from pandas in a future version. Import from datetime instead. data['weekdays'] = pd.to_datetime(data['time']).apply(pd.datetime.weekday) + 1 购买意愿与星期之间的关系图完成! 购买意愿与日期之间的关系图完成!

# -*- coding: utf-8 -*- """ Created on Fri Apr 23 21:10:25 2021 例题:我们把(2,0),(0,2),(0,0)这三个点当作类别1; (3,0),(0,3),(3,3)这三个点当作类别2, 训练好SVM分类器之后,我们预测(-1,-1),(4,4)这两个点所属的类别。 @author: Administrator """ import numpy as np from sklearn.svm import SVC import matplotlib.pyplot as plt data = np.array([[2,0,1],[0,2,1],[0,0,1],[3,0,2],[0,3,2],[3,3,2]]) x = np.array(data[:, 0:2]) y = np.array(data[:,2]) model = SVC(kernel='linear') model.fit(x,y) # ============================================================================= # print(model.dual_coef_) #决策函数中支持向量的系数 # print(model.coef_) #赋予特征的权重(原始问题中的系数)。这仅适用于线性内核 # print(model.intercept_) # 决策函数中的常量 # print(model.support_) #支持向量索引 # print(model.n_support_) #每一类的支持向量数目 print(model.support_vectors_) #支持向量 # ============================================================================= Cp = [[-1,-1],[4,4]] pre = model.predict(Cp) #对Cp中的点进行类别预测 print(pre) plt.scatter(x[:, 0], x[:, 1], c=y, s=30, cmap=plt.cm.Paired) # plot the decision function ax = plt.gca() xlim = ax.get_xlim() ylim = ax.get_ylim() # create grid to evaluate model xx = np.linspace(xlim[0], xlim[1], 30) yy = np.linspace(ylim[0], ylim[1], 30) YY, XX = np.meshgrid(yy, xx) xy = np.vstack([XX.ravel(), YY.ravel()]).T Z = model.decision_function(xy).reshape(XX.shape) # plot decision boundary and margins ax.contour(XX, YY, Z, colors='k', levels=[0], alpha=1, linestyles=['-']) # plot support vectors ax.scatter(model.support_vectors_[:, 0], model.support_vectors_[:, 1], s=100, linewidth=1, facecolors='none', edgecolors='k') plt.show()代码解释

为我将将第二张图的画图方式改为pcolor,并模拟运行结果# -- coding: utf-8 -- """ Created on Thu Jun 1 17:06:08 2023 @author: Rayquaza """ import numpy as np import matplotlib.pyplot as plt def ricker(f, length, dt): t = np.arange(-length/2,(length-dt)/2, dt) y = (1.0 - 2.0*(np.pi2)(f2)(t2)) * np.exp(-(np.pi2)(f2)(t2)) return t,y Frequency = 20 length = 0.128 dt = 0.001 t0, w0 = ricker(Frequency, length, dt) rho = np.array([1.6, 2.4, 1.8]) v = np.array([2000, 3000, 2200]) x = np.arange(0, 500, 1) t = np.arange(0, 0.3, dt) Z = rho*v d_model = np.zeros((2, 500)) for i in range(500): d_model[0, i] = 200 if i < 50: d_model[1, i] = 200 elif i < 250 and i >= 50: d_model[1, i] = 200 + (i-50) elif i >=250: d_model[1, i] = 400 t1 = np.zeros((2, 500)) t1[0, :] = d_model[0,:] / v[1] for i in range(500): t1[1, i] = (d_model[1, i] - d_model[0, i]) / v[2] + t1[0, i] L = np.zeros(2) for i in range(2): L[i] = (Z[i+1] - Z[i]) / (Z[i+1] + Z[i]) L1 = np.zeros([300, 500]) for i in range(2): for j in range(500): if j < 50: L1[int(np.round(t1[i,j]/dt)),j] = (Z[2]-Z[0]) / (Z[2]+Z[0]) else: L1[int(np.round(t1[i,j]/dt)),j] = L[i] syn = np.zeros((300, 500)) for j in range(500): syn[: , j] = np.convolve(L1[:,j], w0, 'same') fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(18, 9)) axes[0].plot(w0, t0, 'b-') axes[0].xaxis.set_ticks_position('top') axes[0].invert_yaxis() axes[0].set_title("Amplitude", fontsize = 12) axes[0].set_ylabel("Time(s)",fontsize = 12) X, T = np.meshgrid(x, t) c = axes[1].contour(X, T, L1) axes[1].xaxis.set_ticks_position('top') axes[1].invert_yaxis() axes[1].set_title("Reflection Coefficient", fontsize = 12) axes[1].set_ylabel("Eight-Way Travel Time(s)",fontsize = 12) c_map = axes[2].pcolormesh(X, T, syn, cmap='bwr', shading='auto') axes[2].xaxis.set_ticks_position('top') axes[2].invert_yaxis() axes[2].set_xlabel("Amplitude", fontsize = 12) axes[2].set_ylabel("Two-Way Travel Time(s)",fontsize = 12) fig.colorbar(c_map, ax=axes[2]) fig.suptitle('Two-Layer Synthetic Seismogram', fontsize = 18) plt.tight_layout() plt.show()

请将下面代码中的两张波动率微笑的图绘制到一张图中# -- coding: utf-8 -- """ Created on Sun May 28 18:08:36 2023 @author: lll """ import numpy as np import matplotlib.pyplot as plt from scipy.optimize import brentq from scipy.stats import norm # 定义BS模型计算期权价格的函数 def bs_price(S, K, r, T, sigma, option='call'): d1 = (np.log(S/K) + (r + 0.5sigma**2)T) / (sigmanp.sqrt(T)) d2 = d1 - sigmanp.sqrt(T) if option == 'call': price = Snorm.cdf(d1) - Knp.exp(-rT)norm.cdf(d2) else: price = Knp.exp(-rT)norm.cdf(-d2) - Snorm.cdf(-d1) return price # 定义计算隐含波动率的函数 def implied_vol(S, K, r, T, price, option='call'): def f(sigma): return bs_price(S, K, r, T, sigma, option) - price return brentq(f, 0.001, 10) # 定义计算波动率微笑图形的函数 def smile_vol(S, r, T, vol_list, K_list, option='call'): if len(vol_list) != len(K_list): raise ValueError("Lengths of vol_list and K_list must be equal.") implied_vol_list = [] for K, vol in zip(K_list, vol_list): price = bs_price(S, K, r, T, vol, option) implied_vol_list.append(implied_vol(S, K, r, T, price, option)) plt.plot(K_list, implied_vol_list) plt.xlabel('Strike') plt.ylabel('Implied Volatility') plt.title('Volatility Smile') plt.show() # 示例代码 S = 100 r = 0.05 T = 1 K_list = np.arange(80, 121, 9) vol_call_list = [0.2, 0.3, 0.4, 0.5, 0.6] vol_put_list = [0.6, 0.5, 0.4, 0.3, 0.2] smile_vol(S, r, T, vol_call_list, K_list, option='call') smile_vol(S, r, T, vol_put_list, K_list, option='put')

下面代码中出现了“Lengths of vol_list and K_list must be equal.”的错误,请帮我修改# -- coding: utf-8 -- """ Created on Sun May 28 18:08:36 2023 @author: lll """ import numpy as np import matplotlib.pyplot as plt from scipy.optimize import brentq from scipy.stats import norm # 定义BS模型计算期权价格的函数 def bs_price(S, K, r, T, sigma, option='call'): d1 = (np.log(S/K) + (r + 0.5sigma**2)T) / (sigmanp.sqrt(T)) d2 = d1 - sigmanp.sqrt(T) if option == 'call': price = Snorm.cdf(d1) - Knp.exp(-rT)norm.cdf(d2) else: price = Knp.exp(-rT)norm.cdf(-d2) - Snorm.cdf(-d1) return price # 定义计算隐含波动率的函数 def implied_vol(S, K, r, T, price, option='call'): def f(sigma): return bs_price(S, K, r, T, sigma, option) - price return brentq(f, 0.001, 10) # 定义计算波动率微笑图形的函数 def smile_vol(S, r, T, vol_list, K_list, option='call'): if len(vol_list) != len(K_list): raise ValueError("Lengths of vol_list and K_list must be equal.") implied_vol_list = [] for K, vol in zip(K_list, vol_list): price = bs_price(S, K, r, T, vol, option) implied_vol_list.append(implied_vol(S, K, r, T, price, option)) plt.plot(K_list, implied_vol_list) plt.xlabel('Strike') plt.ylabel('Implied Volatility') plt.title('Volatility Smile') plt.show() # 示例代码 S = 100 r = 0.05 T = 1 K_list = np.arange(80, 121, 5) vol_call_list = [0.2, 0.3, 0.4, 0.5, 0.6] vol_put_list = [0.6, 0.5, 0.4, 0.3, 0.2] smile_vol(S, r, T, vol_call_list, K_list, option='call') smile_vol(S, r, T, vol_put_list, K_list, option='put')

最新推荐

recommend-type

grpcio-1.63.0-cp38-cp38-linux_armv7l.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

SQLyog-13.1.3-0.x86Community.exe

SQLyog-13.1.3-0.x86Community
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

MATLAB柱状图在数据分析中的作用:从可视化到洞察

![MATLAB柱状图在数据分析中的作用:从可视化到洞察](https://img-blog.csdnimg.cn/img_convert/1a36558cefc0339f7836cca7680c0aef.png) # 1. MATLAB柱状图概述** 柱状图是一种广泛用于数据可视化的图表类型,它使用垂直条形来表示数据中不同类别或组别的值。在MATLAB中,柱状图通过`bar`函数创建,该函数接受数据向量或矩阵作为输入,并生成相应的高度条形。 柱状图的优点在于其简单性和易于理解性。它们可以快速有效地传达数据分布和组别之间的比较。此外,MATLAB提供了广泛的定制选项,允许用户调整条形颜色、
recommend-type

命名ACL和拓展ACL标准ACL的具体区别

命名ACL和标准ACL的主要区别在于匹配条件和作用范围。命名ACL可以基于协议、端口和其他条件进行匹配,并可以应用到接口、VLAN和其他范围。而标准ACL只能基于源地址进行匹配,并只能应用到接口。拓展ACL则可以基于源地址、目的地址、协议、端口和其他条件进行匹配,并可以应用到接口、VLAN和其他范围。