在MATLAB中,rcosdesign的各个参数代表什么意思

时间: 2024-09-24 21:24:40 浏览: 96

在MATLAB中,rcosdesign函数用于设计线性相位型IIR(无限 impulse response)滤波器,其基本原型如下:

[b,a] = rcosdesign(N, Wn, [ripple dB], 'Attenuation', AttenuationdB, 'FilterStructure', Structure)

参数解释:

  1. N:滤波器的阶数(Number of taps),即滤波器的复杂度,决定了系统的频率响应精度。

  2. Wn:滤波器的截止频率,可以是一个标量表示单边带宽,也可以是两个标量表示双边带宽,单位通常为Hz。

  3. Ripple dB:通带内的最大衰减(Ripple in passband),指定在低频部分允许的最大起伏程度,默认值为0,表示平坦的频率响应。

  4. 'Attenuation'AttenuationdB:这是可选的,如果提供,则指定了滚降率(Decay rate)。Attenuation 是一个整数(如6),表示每个频率间隔的衰减;AttenuationdB 是一个标量,以分贝为单位给出衰减。

  5. 'FilterStructure':滤波器结构,可以选择 'Direct form' (默认)、'Direct form II' 或 'State space',影响了滤波器内部信号流图的形式。

相关问题

如何利用MATLAB进行数字基带传输系统的仿真设计?请详细说明仿真流程及相关参数设置。

数字基带传输系统是数字通信系统的重要组成部分,MATLAB提供了一套强大的工具和函数库来支持其仿真设计。为了深入理解这一过程,推荐参考《基于MATLAB的数字基带通信系统仿真设计与分析》。该资源详细介绍了如何利用MATLAB工具包进行数字基带传输系统的模拟和性能分析。

参考资源链接:基于MATLAB的数字基带通信系统仿真设计与分析

数字基带传输系统的仿真设计可以分为几个关键步骤。首先,需要在MATLAB中定义系统的参数,包括信号的采样频率、带宽、滤波器设计等。接着,需要实现信号的编码和调制过程,这通常涉及到随机信号的生成、基带信号的形成和信号的数字脉冲幅度调制(PAM)。

在MATLAB中,可以使用内置函数如randi、pammod、rcosdesign等来生成随机比特序列、进行PAM调制以及设计根升余弦(root-raised cosine, RRC)滤波器等。在仿真中,通常需要考虑信号的传输环境,如添加噪声、多径效应以及采用相应的解调和解码技术来恢复原始信号。

在信号传输之后,接收端需要对接收到的信号进行处理,包括滤波、同步、抽样、判决以及最终的比特流恢复。MATLAB的通信系统工具箱提供了各种功能强大的函数和系统对象,用于实现上述的数字信号处理过程。

整个仿真流程需要细心调试和验证,确保所有参数设置正确无误,能够反映真实的传输条件。为了实现最佳接收条件,还需要对信号的幅值、频率和相位进行精确控制,并通过仿真的结果来评估系统的误码率、信噪比等关键性能指标。

在完成仿真设计后,通过分析MATLAB输出的结果,可以对整个数字基带通信系统的性能进行评估。如果希望进一步了解如何优化基带传输系统的性能,或者探讨其他数字通信技术,可以继续查阅《基于MATLAB的数字基带通信系统仿真设计与分析》一书,该书深入探讨了基带系统的各个方面,提供了一个全面的数字通信学习平台。

参考资源链接:基于MATLAB的数字基带通信系统仿真设计与分析

QPSK调制解调用matlab

好的,我现在需要帮助用户了解如何在Matlab中实现QPSK调制和解调,并提供示例代码。首先,我需要回忆一下QPSK的基本原理,以及Matlab中相关的函数和工具。用户提到了参考的引用资料,其中提到了基于MATLAB的仿真,包括各个波形和频谱图,还有误码率曲线。这可能意味着用户需要详细的步骤和可视化部分。

首先,QPSK调制是将两个比特映射到一个符号上,每个符号代表载波的相位变化。B方式应该是Gray编码,这样相邻符号只有一个比特不同,可以减少误码率。调制部分需要将二进制数据转换为符号,比如0映射为45度,1映射为135度,依此类推。然后使用正交载波进行调制,即I路和Q路的调制。

在Matlab中,可以使用comm.QPSKModulator和comm.QPSKDemodulator系统对象,或者手动实现。用户可能需要示例代码,所以应该提供两种方法:使用内置函数和手动实现。此外,用户可能需要生成波形图、星座图等,因此需要包含绘图的部分。

接下来,解调部分需要相干解调,使用匹配滤波器,然后进行采样和判决。误码率的计算也是关键,可能需要使用berawgn函数比较理论值和仿真值。用户的问题可能涉及到如何添加噪声,使用awgn函数,以及如何计算误码率。

还需要注意代码的正确性,比如比特到整数的映射,调制后的信号合成,以及解调时的相位处理。另外,用户可能需要了解参数设置,比如采样频率、符号速率、载波频率等,这些在示例代码中需要合理设置,或者作为变量让用户调整。

考虑到用户可能对Matlab不太熟悉,代码注释应该详细,步骤清晰。同时,引用提供的参考文献中的方法,确保代码符合QPSK的B方式调制。可能还需要解释每个步骤的作用,比如为什么需要升采样,脉冲成型的作用等。

最后,生成相关问题,可能涉及误码率分析、与其他调制方式的比较、多径信道的影响等。需要确保问题覆盖用户可能感兴趣的扩展领域。以下是在Matlab中实现QPSK调制解调的详细步骤和示例代码,包含核心环节的时域波形和星座图展示:

一、QPSK调制实现

%% 参数设置
fs = 1e6;       % 采样频率
fc = 100e3;     % 载波频率
Rs = 10e3;      % 符号速率
N = 1000;       % 发送比特数
sps = fs/Rs;    % 每符号采样点数

%% 生成二进制数据
data = randi([0 1], N, 1);

%% 串并转换(B方式Gray编码)
I_data = data(1:2:end);
Q_data = data(2:2:end);

%% 符号映射(QPSK星座图)
symbols = (1/sqrt(2)) * (2*I_data - 1 + 1j*(2*Q_data - 1));

%% 升采样与脉冲成型
tx_signal = upfirdn(symbols, rcosdesign(0.5, 6, sps), sps);

%% 载波调制
t = (0:length(tx_signal)-1)'/fs;
I_carrier = real(tx_signal) .* cos(2*pi*fc*t);
Q_carrier = imag(tx_signal) .* sin(2*pi*fc*t);
modulated_signal = I_carrier - Q_carrier;

二、QPSK解调实现

%% 添加高斯白噪声
SNR_dB = 10;
rx_signal = awgn(modulated_signal, SNR_dB, 'measured');

%% 正交下变频
I_rx = rx_signal .* cos(2*pi*fc*t);
Q_rx = -rx_signal .* sin(2*pi*fc*t);

%% 匹配滤波
filter_coeff = rcosdesign(0.5, 6, sps);
I_filtered = conv(I_rx, filter_coeff, 'same');
Q_filtered = conv(Q_rx, filter_coeff, 'same');

%% 符号同步与抽样
symbols_rx = I_filtered(1:sps:end) + 1j*Q_filtered(1:sps:end);

%% 判决与逆映射
I_decision = real(symbols_rx) > 0;
Q_decision = imag(symbols_rx) > 0;
rx_data = reshape([I_decision'; Q_decision'], [], 1);

三、结果可视化

  1. 时域波形对比

    figure;
    subplot(211); plot(real(tx_signal(1:200))); 
    title('发射信号I路波形'); grid on;
    subplot(212); plot(imag(tx_signal(1:200))); 
    title('发射信号Q路波形'); grid on;
    
  2. 星座图显示

    figure;
    scatter(real(symbols_rx), imag(symbols_rx), 50, 'filled');
    title('接收信号星座图'); axis([-2 2 -2 2]); grid on;
    
  3. 误码率计算

    [err_count, ber] = biterr(data(1:2*length(symbols_rx)), rx_data);
    theory_ber = berawgn(SNR_dB, 'psk', 4, 'nondiff');
    disp(['实测BER: ', num2str(ber), '  理论BER: ', num2str(theory_ber)]);
    

四、关键点说明

  1. 采用根升余弦滤波器(rcosdesign)进行脉冲成型,滚降系数设为0.5,可有效抑制码间干扰[^1]
  2. 载波调制使用正交调制法,I路和Q路分别乘以余弦和正弦载波
  3. 接收端采用相干解调,需保证本地载波与发送端频率相位同步
  4. 星座图显示可直观评估信道质量和解调性能[^2]
向AI提问 loading 发送消息图标

相关推荐

下面是我要做的仿真思路,请分析最后的图是什么样的,这是我要做的毕业设计,现在要开始用MATLAB做仿真,我该从哪方面开始入手,详细介绍一下各部分的内容,并给出步骤 本文主要研究直接序列扩频通信系统的仿真设计,发送端拟包含基带信号生成、信道编码、交织处理、扩频调制、载波调制、成形滤波,信道拟采用Nakagami-m多径信道,接收端拟包含匹配滤波、载波同步、解扩处理、信道均衡、信道校正、解调、解交织、译码恢复。 信源拟通过伪随机序列生成器产生二进制基带数据,在发送端部分,信道编码拟采用卷积编码,原始数据经过编码、交织后拟采用BPSK调制,随后拟采用Gold序列进行直接序列扩频,将符号与伪随机码进行模二加实现频谱扩展。扩频后的基带信号通过与高频载波进行频谱搬移的乘法运算实现载波调制,接着拟利用根升余弦滤波器对其进行波形整形以完成成形滤波。最终处理后的信号进入Nakagami-m多径信道进行传输,初步规划设置2-4独立衰落路径(典型场景参考3径)。在接收端接收信号先通过匹配滤波器实现初步处理,之后进行伪码同步以及载波同步,完成同步后,将同步后的信号进行相关解扩,再进行多径信号合并以及信道均衡,再将形成的并行数据进行信道校正,这样可以减少信道带来的随机性误差。最终对均衡后的信号进行BPSK解调、解交织和译码恢复原始信息。通过调整Nakagami-m信道的m参数模拟不同衰落环境,对比分析扩频系统在强衰落与弱衰落场景下的抗干扰性能。 本设计拟采用MATLAB软件搭建扩频系统的仿真平台,并分析比较扩频通信系统在Nakagami-m信道下的性能。

大学生入口

大家在看

recommend-type

MT8167 PCB设计指南资料

MT8167_PCB_Design_Guidelines,MT8167 PCB设计指南资料,需要其它资料可留言
recommend-type

grbl1.1f20170801-stm32f103c8t6

grbl1.1f在stm32f103c8t6上的移植,参考了github上grbl0.9的移植,但将通讯方式改为usb虚拟串口,同时调整了端口设置。之前在csdn上传的版本有许多bug,已删除,此代码修复了很多问题。
recommend-type

GaAs单量子阱:它计算GaAs QW中的能级与阱宽度的关系及其相应的本征函数。-matlab开发

在半导体中,可以通过将一种半导体材料(例如 InGaAs)的“阱”层夹在另一种半导体材料(例如 InP)的两个“势垒”层之间来制造实际的势阱。 在这种结构中,电子在“阱”材料中具有较低的能量,并且在与“势垒”材料的界面处看到一些势垒高度 Vo。 这种结构广泛用于光纤通信等激光器中。 在半导体中,这种势阱被称为“量子阱”。(*) 此 m 文件 (GaAs_QW) 计算具有恒定有效质量与不同阱宽的 GaAs 单量子阱中的能级。 它还绘制了给定势能和阱宽的相应特征函数。 (*) 大卫。 AB Miller,科学家和工程师的量子力学。 剑桥。 博士生。 埃内斯托·莫莫克斯(Ernesto Momox) 享受!
recommend-type

研发运营一体化DevOps能力成熟度模型评估(完整版).zip

DevOps 能力成熟度模型评估 标准 DevOps能力成熟度模型- 总体架构 -敏捷开发管理 过程-持续交付 技术运营 应用设计 安全 风险管理 组织结构。 研发运营一体化是指在IT软件及相关服务的研发及交付过程中,将应用的需求、开发、测试、部署 和运营统一起来,基于整个组织的协作和应用架构的优化,实现敏捷开发、持续交付和应用运营的无缝集成。帮助企业提升IT效能,在保证稳定的同时,快速交付高质量的软件及服务,灵活应对快速变化的业务需求和市场环境。
recommend-type

常用OrCAD原理图库及Library.rar

常用的cadence原理图库和PCB库

最新推荐

recommend-type

matlab中pca输出参数对比解析

- `score`:返回的是样本在主成分空间的得分,每一行代表一个样本在各个主成分上的投影。 - `latent`:返回的是主成分的方差贡献率,即每个主成分解释了原始数据总方差的多少比例。 在给定的示例中,有两种不同的...
recommend-type

C#与MATLAB之间传递参数

在C#中,我们可以使用MWNumericArray来接收MATLAB返回的数据,而在MATLAB中,我们可以使用MWArray来将数据传递给C#。MWNumericArray提供了许多有用的方法,例如ToScalarDouble、ToScalarInt等,可以方便地将MATLAB...
recommend-type

王济-matlab在振动信号处理中的应用代码.docx

Matlab在振动信号处理中的应用代码 本文档总结了Matlab在振动信号处理中的应用代码,包括消除多项式趋势项和五点滑动平均法平滑处理两个程序。这些代码对于处于振动信号的小白非常有用,亲测可以完美运行。 程序4-...
recommend-type

基于模糊故障树的工业控制系统可靠性分析与Python实现

内容概要:本文探讨了模糊故障树(FFTA)在工业控制系统可靠性分析中的应用,解决了传统故障树方法无法处理不确定数据的问题。文中介绍了模糊数的基本概念和实现方式,如三角模糊数和梯形模糊数,并展示了如何用Python实现模糊与门、或门运算以及系统故障率的计算。此外,还详细讲解了最小割集的查找方法、单元重要度的计算,并通过实例说明了这些方法的实际应用场景。最后,讨论了模糊运算在处理语言变量方面的优势,强调了在可靠性分析中处理模糊性和优化计算效率的重要性。 适合人群:从事工业控制系统设计、维护的技术人员,以及对模糊数学和可靠性分析感兴趣的科研人员。 使用场景及目标:适用于需要评估复杂系统可靠性的场合,特别是在面对不确定数据时,能够提供更准确的风险评估。目标是帮助工程师更好地理解和预测系统故障,从而制定有效的预防措施。 其他说明:文中提供的代码片段和方法可用于初步方案验证和技术探索,但在实际工程项目中还需进一步优化和完善。
recommend-type

风力发电领域双馈风力发电机(DFIG)Simulink模型的构建与电流电压波形分析

内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问题,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问题给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
recommend-type

Java代理模式实现解析与代码下载

设计模式是软件工程中用于解决特定问题的一套已经被广泛认可、可重用的解决方案。在众多设计模式中,代理模式(Proxy Pattern)属于结构型模式,它为其他对象提供一个代理以控制对这个对象的访问。代理模式在Java中的实现涉及创建一个接口和一个代理类,代理类将控制对实际对象的访问。 代理模式通常包含以下三种角色: 1. 主题(Subject):定义了RealSubject和Proxy的共同接口,使得两者可以互换使用。 2. 真实主题(RealSubject):定义了代理所表示的具体对象。 3. 代理(Proxy):包含对真实主题的引用,通常情况下,在其内部通过构造函数来实现对RealSubject的引用。它可以在调用RealSubject之前或者之后执行额外的操作。 在Java中实现代理模式通常有几种方式,包括静态代理和动态代理。 ### 静态代理: 在静态代理中,代理类是在编译时就确定下来的,它是在程序运行之前就已经存在的。静态代理通常需要程序员编写具体的代理类来实现。静态代理类通常需要以下步骤来实现: 1. 定义一个接口,声明真实主题需要实现的方法。 2. 创建一个真实的主题类(RealSubject),实现接口中的方法。 3. 创建代理类(Proxy),实现同一个接口,并持有对真实主题对象的引用。在代理类的方法中添加额外的逻辑,然后调用真实主题的方法。 ### 动态代理: 动态代理是在运行时动态生成的代理类,不需要程序员手动编写代理类。在Java中,可以使用java.lang.reflect.Proxy类和InvocationHandler接口来实现动态代理。动态代理的优点是可以为任意的接口生成代理实例。动态代理实现的步骤通常为: 1. 定义一个接口。 2. 创建一个实现InvocationHandler接口的处理器类。在invoke方法中实现对方法的调用逻辑,并执行代理逻辑。 3. 使用Proxy类的newProxyInstance方法,传入ClassLoader对象,接口数组以及 InvocationHandler 实例,从而动态生成代理对象。 ### Java中的代理模式应用实例: 考虑到上述对代理模式的说明,我们可以根据文件【标题】中提到的“设计模式-代理模式-java”和【描述】中“自己写的Java的代理模式的实现,有兴趣的可以下载看看”来分析具体的实现案例。遗憾的是,由于没有具体的代码内容,我们只能依据常规知识讨论可能的实现细节。 假设实现的代理模式是用于控制对某个资源的访问控制,例如文件访问、数据库操作或者其他系统的远程调用。实际的代理类将实现相应的接口,并在其方法中添加权限检查、日志记录、延迟加载、远程方法调用等代理逻辑。 在【压缩包子文件的文件名称列表】中提到的“proxy”指代了与代理模式相关的文件。可以推测,压缩包中可能包含了一个或多个Java文件,这些文件可能包含了接口定义、真实主题实现、代理类实现以及可能的测试类等。 ### 总结: 代理模式是软件开发中非常实用的设计模式之一。它在实际开发中有着广泛的应用,特别是在需要进行权限控制、访问控制、延迟加载、日志记录、事务处理等场景下。Java中提供了对代理模式的良好支持,无论是通过静态代理还是动态代理实现,都可以有效地对实际对象的访问进行控制和增强。在实现代理模式时,应当遵循接口的定义,保证代理类和真实主题的兼容性,以及确保代理逻辑的正确性和高效性。 由于代理模式在不同的项目中具体实现细节可能存在差异,因此在处理具体业务逻辑时,开发者需要根据实际情况灵活运用,并可能需要结合其他设计模式(如装饰器模式、适配器模式)来处理更加复杂的场景。
recommend-type

集成电路制造中的互扩散效应分析:理论与实验的融合

# 摘要 互扩散效应是影响集成电路性能的关键因素之一,涉及材料中的物质如何通过扩散过程影响彼此的分布和浓度。本文首先概述了互扩散效应的基本理论,
recommend-type

计算机行业岗位分类

<think>好的,我现在需要帮用户了解计算机行业的岗位分类。首先,我需要回忆一下之前提供的引用内容,看看有没有相关的信息可以利用。引用[1]提到了网络安全专业的学习内容,包括Linux运维、Python开发、渗透测试等,说明网络安全是一个重要的岗位类别。引用[2]则提到应届生对软件开发以外的职位了解不多,可能说明用户需要更全面的分类信息。 接下来,我应该把计算机行业的岗位分成几个大类,每个大类下再细分具体职位。常见的分类可能有研发类、运维类、数据类、安全类、测试类、产品与设计类,以及新兴技术类。需要确保每个类别都有具体的例子,比如研发类包括前端开发、后端开发、移动开发等。 同时,要注意引
recommend-type

脚本实现亿级数据快速构建技术分享

在IT行业中,性能测试是一项重要的工作,它可以帮助我们了解系统在高负载下运行的稳定性和效率。为了进行有效的性能测试,我们需要模拟出海量的测试数据。数据的多样性和数量级是模拟真实业务场景的关键因素。本篇文章将详细介绍如何利用脚本来快速构建海量测试数据,并将重点放在标题中提到的“脚本快速构建表数据”的技术实现细节和实际应用。 首先,我们需要明确“脚本快速构建表数据”的主要应用场景。在性能测试和大数据处理中,测试数据的构建是一个复杂且耗时的工作。为了能够模拟出真实且多变的业务场景,测试数据需要具有高度的真实性、多样性以及庞大的数量级。传统的手动构建数据方法效率低,且难以满足大规模数据的需求,因此,脚本自动化生成数据成为了一个重要的解决方案。 脚本快速构建测试数据主要涉及以下几个知识点: 1. 数据生成策略: - 随机数据生成:通常利用脚本语言(例如Python、Shell等)中的随机函数来生成不重复或者具有一定规律的数据,以模拟真实世界中的用户信息、事务流水等。 - 预设数据模板:对于某些特定格式的测试数据,可以预先定义好数据模板,然后通过脚本循环填充,生成大量符合模板的数据。 - 数据库函数/存储过程:使用数据库自带的函数或存储过程来生成特定格式的数据,可以更加高效地利用数据库自身的计算能力。 2. 脚本语言的选择: - Python:由于其简洁明了的语法以及强大的第三方库支持(如pandas、numpy、random等),Python在数据处理和生成方面有着广泛应用。 - Shell:在Linux环境下,Shell脚本由于其轻量级和易编写的特点,被广泛用于快速原型开发和数据预处理。 - SQL:当需要直接操作数据库时,通过编写SQL脚本来生成或填充测试数据是效率很高的方式。 3. 海量数据的处理: - 分批处理:将海量数据分成多批次进行生成和加载,可以避免单次操作消耗过多系统资源。 - 并行生成:通过多线程或多进程的编程技术,可以在多核处理器上并行生成数据,极大提高数据构建效率。 - 数据库事务管理:合理使用数据库事务可以保证数据的一致性和完整性,避免因大量数据操作导致的异常情况。 4. 测试数据的多样性: - 数据变化逻辑:脚本中应该包含数据变化逻辑,以模拟真实世界中数据的动态变化,比如用户年龄的增长、交易金额的波动等。 - 数据分布控制:有时需要根据特定的数据分布规则生成数据,如正态分布、泊松分布等,以便更加真实地模拟业务数据。 5. 性能优化: - 代码优化:优化脚本的算法和数据处理逻辑,减少不必要的计算和内存使用,提高脚本执行效率。 - 系统资源管理:合理分配系统资源,比如内存、CPU等,确保数据生成脚本和其他服务的平衡运行,避免资源竞争导致的性能瓶颈。 在实践中,脚本快速构建测试数据通常包含一个具体的脚本文件。从给定的文件信息中,我们可以看到有两个文件名"yanglao.sh"和"test"。"yanglao.sh"很可能是一个Shell脚本文件,用于自动化执行某些任务,比如生成测试数据。而"test"这个名称比较泛化,它可能是指测试脚本、测试用例或测试数据文件本身。这两个文件很可能是本次讨论中提及的脚本快速构建表数据的两个组成部分。 总之,在性能测试和大数据处理中,快速构建海量且多变的测试数据是提升测试质量的关键。通过编写和使用高效的脚本来自动化生成测试数据,不仅可以节省时间,提高效率,还能提高测试数据的真实性和可靠性,从而更好地满足复杂业务场景下的性能测试需求。
recommend-type

外延工艺改进:提升集成电路制造效率的秘籍

# 摘要 集成电路制造是现代电子工业的基石,而外延工艺作为其核心环节,对于集成电路的性能和质量具有决定性作用。本文综述了集成电路外延工艺的理论基础、实践技术及优化策略,并探讨了制造效率提升的途径。通过对外延层生长机制、技术分类及其质量评估方法的分析,深入讨论了提升外延层均匀性和缩短工艺周期的技术手段。此外,本文还讨论了新兴技术对外延工艺的影响,行业
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部