一图看懂EVM

可以看到EVM可以说是一个状态机, 外界的调用者信息(TX CALLER 图上部), 外界的状态(区块链状态 图左部)都会输入EVM, 根据EVM存储的智能合约代码 + 全局的链信息 + 调用者信息 + 调用者输入参数(依据合约opcode执行bytecode, 执行过程中会消耗gas) = 输出信息(依据bytecode执行, bytecode的判断条件, gas是否够用等).

account中的code存储智能合约的bytecode, storage存储智能合约state信息, 如何account是普通EOA则前两者我空. 执行智能合约evm的ROM会存储智能合约的code, evm的storage会存储智能合约的storage, evm的memory会初始全部置0后添加block的相关状态.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用MATLAB绘制光纤通信系统的EVM图的简单步骤: 步骤1:定义一些变量 首先,需要定义一些变量来表示信号的一些特征,例如信噪比、调制方式、符号率等等。这些变量会用于后面的计算和绘图。例如: ``` SNR_dB = 20; % 信噪比,单位为dB Modulation = 'QPSK'; % 调制方式 SymbolRate = 10e6; % 符号率,单位为Hz ``` 步骤2:生成信号 接下来,需要生成一个模拟的信号。这个信号可以是一个随机序列,也可以是一个已知的信号。在这个例子中,我们使用一个QPSK调制的信号。例如: ``` M = 4; % 调制阶数 k = log2(M); % 每个符号的比特数 data = randi([0 1], 1000*k, 1); % 随机生成1000个比特 txSig = qammod(data, M); % QPSK调制 ``` 步骤3:添加噪声 为了模拟实际的通信环境,需要为信号添加一些噪声。这个噪声可以是高斯白噪声,也可以是其他类型的噪声。在这个例子中,我们使用高斯白噪声。例如: ``` EsNo_dB = SNR_dB + 10*log10(k) - 10*log10(SymbolRate); % 每比特信噪比,单位为dB EsNo = 10^(EsNo_dB/10); % 转换成线性比例 N0 = 1/EsNo; % 噪声功率谱密度 rxSig = awgn(txSig, SNR_dB, 'measured'); % 添加高斯白噪声 ``` 步骤4:计算EVM 最后,需要计算EVM并绘制出EVM图。EVM是误差向量幅度的均方根(Root Mean Square,RMS)与参考信号幅度的均值之比。在这个例子中,我们使用内置的`comm.EVM`对象来计算EVM。例如: ``` refSig = qammod(data, M); % 参考信号 evm = comm.EVM('ReferenceSignal', refSig, 'XPercentile', 90); % 创建EVM对象 EVM = evm(rxSig); % 计算EVM ``` 计算出EVM之后,我们可以绘制出EVM图,以便更好地观察信号质量。例如: ``` figure; plot(EVM); title('EVM Plot'); xlabel('Symbol Index'); ylabel('EVM (%)'); ``` 绘制出来的图形将会是一个随着符号数逐渐增加而逐渐变化的曲线,它可以帮助我们分析信号的质量问题。 以上就是使用MATLAB绘制光纤通信系统的EVM图的简单步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值