当前位置: 首页 > article >正文

NR SRS Configuration

文章目录

    • Frequency Positioning
    • Full-Bandwidth Configuration
    • Frequency-Hopping Configuration
    • Multi-User Configurations
      • Time-Domain Orthogonal SRS
      • Cyclic-Shift Orthogonal SRS
    • Summary and Further Exploration
    • References

此示例展示了如何生成探测参考信号(SRS),如TS 38.211第6.4.1.4节[1]中定义的,包括SRS配置、符号和索引生成、OFDM资源网格映射以及SRS波形生成。此示例演示了如何选择适当的参数来定位SRS的频率,并设置以下内容:

  • 全频带传输:生成覆盖所有可用带宽的SRS。
  • 频率跳变传输:生成具有不同频率跳变模式的周期性和非周期性SRS传输。
  • 多用户传输:使用时间、频率和循环移位生成正交SRS。

Frequency Positioning

本节展示了如何配置SRS在频域中的位置,并确定分配给SRS的带宽。配置一个15 MHz带宽的载波,子载波间隔(SCS)为15 kHz。

carrier = nrCarrierConfig;
carrier.NSizeGrid = 79; % Bandwidth in RB
carrier.SubcarrierSpacing = 15;%15kHz

15 × 12 × 79 = 14.422   k H z 15\times 12 \times 79=14.422\rm ~kHz 15×12×79=14.422 kHz,但是因为存在保护带宽,可以认为占用了15 kHz的频带空间。

带宽配置参数 CSRSBSRS 控制分配给SRS的带宽,通常CSRS增大时,带宽增加,而BSRS增大时,带宽减少。使用这些交互控制来配置SRS带宽。

srs = nrSRSConfig;
srs.CSRS = 10;  % Bandwidth configuration C_SRS (0...63)
srs.BSRS =  1;  % Bandwidth configuration B_SRS (0...3)

要修改SRS的频率位置,改变FrequencyStartNRRC的值。当 NRRC = 0 时,FrequencyStart指定SRS的频率起点。

F 0 = FrequencyStart + NRB T ⋅ mod ( ⌊ 4   NRRC NRB T ⌋ , NSB ) F_0=\text{FrequencyStart}+\text{NRB}_T\cdot\text{mod}\bigg(\bigg\lfloor4~\frac{\text{NRRC}}{\text{NRB}_T}\bigg\rfloor,\text{NSB}\bigg) F0=FrequencyStart+NRBTmod(4 NRBTNRRC,NSB)

srs.FrequencyStart = 20; % Frequency position of the SRS in carrier in RB (0...271)
          srs.NRRC = 5; % Frequency domain position in blocks of 4 PRB (0...67)

hSRSGrid(carrier,srs,1,true); % Create and display a single-slot resource grid containing SRS
title(['Resource Grid Containing SRS. NRRC = ' num2str(srs.NRRC)]);
hSRSAnnotations(carrier,srs);

此示例展示了如何配置SRS的位置和带宽。通过调整 FrequencyStartNRRC 的值,可以修改SRS的频率位置。

  • FrequencyStart:指定SRS的频率起点,单位为资源块(RB),相对于载波起点,当NRRC = 0时使用。
  • NRRC:用于控制频率位置的参考配置。
  • N R B T \mathrm {NRB}_{T} NRBT:每次传输分配给SRS的资源块(RB)数量,可以通过 CSRSBSRS 查表计算

这张图展示了包含SRS的 single slot OFDM资源格。对于 CSRS = 10BSRS = 1,当NRRC在范围(3…5)内时,SRS的频率位置发生偏移;当NRRC在范围(6…8)内时,SRS的频率位置发生偏移。 当NRRC为9时,SRS返回到初始位置(FrequencyStart)。 N R B T \mathrm {NRB}_{T} NRBT 是每次传输分配给SRS的资源块(RB)数量。

在这里插入图片描述

此图展示了上述概念,其中CSRS = 10和BSRS = 1。上图少画了 F 0 = 6 、 7 、 8 F_0=6、7、8 F0=678 的情况

NRRC 是一个附加的频率偏移,表示为4个RB的数量,且它对应于更高层参数 freqDomainPosition(见 TS 38.331 第6.3.2节 SRS-Config [2])。当 NRRC 的值在 k ⋅ ( N R B T / 4 ) k⋅(\mathrm{NRB}_T/4) k(NRBT/4) ( k + 1 ) ⋅ ( N R B T / 4 ) − 1 (k+1)⋅(\mathrm{NRB}_T/4)−1 (k+1)(NRBT/4)1 之间时,SRS 的频率位置会被偏移 k ⋅ N R B T k⋅\mathrm{NRB}_T kNRBT,其中 k k k 是一个整数。TS 38.211 第6.4.1.4节中提到 N R B T \mathrm{NRB}_T NRBT m S R S . b m_{SRS.b} mSRS.b,其中 b = B S R S b=\mathrm{BSRS} b=BSRS。有关更多信息,请参见 nrSRSConfig 配置对象的 NRBPerTransmission 属性。

NSB \text{NSB} NSB 表示 SRS subbands 的数量(每个子带的频率带宽为 NRB T \text{NRB}_T NRBT),SRS 可以通过参数 NRRC 定位到这些子带。要计算 NSB \text{NSB} NSB,可以使用 SRS 带宽配置表(见 TS 38.211 表 6.4.1.4.3-1)。您还可以通过 nrSRSConfig 对象的 BandwidthConfigurationTable 属性访问此表。

csrs = srs.CSRS;
disp(nrSRSConfig.BandwidthConfigurationTable(csrs+(0:2) + (csrs==0),:));
C_SRS    m_SRS_0    N_0    m_SRS_1    N_1    m_SRS_2    N_2    m_SRS_3    N_3
_____    _______    ___    _______    ___    _______    ___    _______    ___

  9        32        1       16        2        8        2        4        2 
 10        36        1       12        3        4        3        4        1 
 11        40        1       20        2        4        5        4        1 

第一列包含参数 CSRS 的可能值。对于 C S R S = 10 \rm CSRS = 10 CSRS=10 B S R S = 1 \rm BSRS = 1 BSRS=1, SRS 可以选择位置的数量是 N S B = N 0 ⋯ N B S R S = N 0 × N 1 = 3 \mathrm{NSB}=N_{0}\cdots N_{B_{\mathrm{SRS}}}=N_{0}\times N_{1}=3 NSB=N0NBSRS=N0×N1=3 N R B T = m S R S , b = m S R S , 1 = 12 \mathrm{NRB}_T=m_{SRS,b}=m_{SRS,1}=12 NRBT=mSRS,b=mSRS,1=12 N S B = 3 \mathrm{NSB}=3 NSB=3 意味着有三个可选择的位置, N R B T = 12 \mathrm{NRB}_T=12 NRBT=12 由 CSRS = 10 和 BSRS = 1 共同决定,确定了SRS的带宽。


在这里插入图片描述

下面我以这张图举例子来说明为何 F 0 = 32   R B F_0=32 \rm ~RB F0=32 RB,首先我们配置了 srs.FrequencyStart = 20; N R B T \mathrm{NRB}_T NRBT 查表可知为12。 N S B \mathrm{NSB} NSB 查表可知为3,这意味着有3个可选择的SRS位置空间。根据公式 F 0 = FrequencyStart + NRB T ⋅ mod ( ⌊ 4   NRRC NRB T ⌋ , NSB ) = 32 + mod ( ⌊ 4 ∗ 5 / 12 ⌋ , 3 ) = 32 F_0=\text{FrequencyStart}+\text{NRB}_T\cdot\text{mod}\bigg(\bigg\lfloor4~\frac{\text{NRRC}}{\text{NRB}_T}\bigg\rfloor,\text{NSB}\bigg)=32+\text{mod}\bigg(\bigg\lfloor 4*5/12\bigg \rfloor ,3\bigg)=32 F0=FrequencyStart+NRBTmod(4 NRBTNRRC,NSB)=32+mod(45/12,3)=32

% Calculate and display the number of SRS subbands configurable by NRRC
NSBTable = hSRSNumberOfSubbandsOrHoppingPatterns(srs);

fprintf('Number of SRS subbands (NRRC < %d):  %d', NSBTable*srs.NRBPerTransmission/4,NSBTable);

Number of SRS subbands (NRRC < 9): 3

% Calculate the frequency origin of the first SRS symbol
f0 = hSRSFrequencyOrigin(srs);
fprintf('The frequency origin of the SRS is F0 = %d RB.', f0);

The frequency origin of the SRS is F0 = 32 RB.

使用 nrSRSIndices 的信息输出确认 SRS 的频率位置

[~,info] = nrSRSIndices(carrier,srs);
display(info.PRBSet(1))

32

对于给定的 C S R S \rm CSRS CSRS 值,可以使用 N R R C \rm NRRC NRRC 分配 SRS 的频带是 F r e q u e n c y S t a r t + ( 0 … N S B ⋅ N R B T − 1 ) \mathrm{FrequencyStart + (0 \dots NSB \cdot NRB}_T - 1) FrequencyStart+(0NSBNRBT1)。对于 C S R S = 10 \rm CSRS = 10 CSRS=10 B S R S = 0 BSRS = 0 BSRS=0时,当 N R R C = N S B ⋅ N R B T / 4 = N 0 … N B S R S ⋅ m S R S , b / 4 = m S R S , 0 / 4 = 9 \mathrm{NRRC = NSB \cdot NRB}_T / 4 = N0 \dots N_{B_{SRS}} \cdot m_{SRS,b}/4 = m_{SRS,0}/4 = 9 NRRC=NSBNRBT/4=N0NBSRSmSRS,b/4=mSRS,0/4=9 时,SRS 会发生环绕,这会导致与 N R R C = 0 \rm NRRC = 0 NRRC=0 相同的频率位置。

fprintf('The SRS frequency range is limited to the range (%d,%d) RB for the current value of CSRS (%d).',srs.FrequencyStart,srs.FrequencyStart + NSBTable*srs.NRBPerTransmission,srs.CSRS);

The SRS frequency range is limited to the range (20,56) RB for the current value of CSRS (10).

当启用时隙内频率跳跃时,FrequencyOrigin 的计算仅对时隙中的第一个 SRS 符号有效。对于频率跳跃的 SRS,使用 nrSRSIndices 函数的输出 info.PRBsetinfo.SubcarrierOffset 来确定后续符号的频率位置。


Full-Bandwidth Configuration

本节展示了如何通过计算适当的 SRS 带宽参数来配置和生成全带宽 SRS 传输。

配置一个 10 MHz 带宽的载波,子载波间隔(SCS)为 15 kHz。

carrier = nrCarrierConfig;
carrier.NSizeGrid = 52;
carrier.SubcarrierSpacing = 15;

带宽配置参数 CSRS、BSRS 和 BHop 控制分配给 SRS 的带宽。为了配置全带宽 SRS,请设置 CSRS = 14 和 BSRS = 0。

srs = nrSRSConfig;
srs.CSRS = 14; % Bandwidth configuration C_SRS (0...63)
srs.BSRS =  1; % Bandwidth configuration B_SRS (0...3)

hSRSGrid(carrier,srs, 1, true); % Create and display a single-slot resource grid containing SRS
title(['Resource Grid with Full-Band SRS. CSRS = ' num2str(srs.CSRS)]);
hSRSAnnotations(carrier,srs);

在这里插入图片描述


对于 SRS 频率分配,您可以在 SRS 带宽配置表(请参见 TS 38.211 表 6.4.1.4.3-1)中找到适当的 CSRSBSRSBHop 值。或者,nrSRSConfig.BandwidthConfigurationTable 提供了一种便捷的方式来访问和显示此表格。

% 要显示带宽配置表的相关行,计算完整带宽 SRS 的 CSRS 值
% To display relevant rows of the bandwidth configuration table, calculate the value of CSRS for a full band SRS
[csrs,bsrs] = hSRSBandwidthConfiguration(srs,carrier.NSizeGrid);

% Display bandwidth configuration table
disp(nrSRSConfig.BandwidthConfigurationTable(csrs+(0:2) + 1*(csrs==0),:));
C_SRS    m_SRS_0    N_0    m_SRS_1    N_1    m_SRS_2    N_2    m_SRS_3    N_3
_____    _______    ___    _______    ___    _______    ___    _______    ___

 13        48        1       24        2       12        2        4        3 
 14        52        1        4       13        4        1        4        1 
 15        56        1       28        2        4        7        4        1 

标记为 m_SRS_b 的列,其中 b = 0 … 3 b = 0 \dots 3 b=03,包含为参数 b = B S R S b = BSRS b=BSRS 和非跳频配置情况下分配给 SRS 的 RB 数量。对应于 C_SRS = 14 的行包含一个 RB 数量 m_{SRS_0} = 52,这是最接近载波带宽的值。因此,参数 CSRS = 14BSRS = 0 为当前载波配置配置了全带 SRS 传输。这个示例使用带宽配置表来计算最大化载波带宽内 SRS 带宽的 CSRS 和 BSRS 值。


Frequency-Hopping Configuration

您可以为多符号和多时隙SRS传输配置时隙内和时隙间频率跳跃。每个OFDM符号的瞬时带宽在SRS OFDM符号中是恒定的,并且小于SRS跳跃的带宽。

配置一个15 MHz带宽的载波,采用15 kHz的子载波间隔(SCS)。

carrier = nrCarrierConfig;
carrier.NSizeGrid = 79;
carrier.SubcarrierSpacing = 15;

创建一个位于时隙末端的四符号SRS。选择重复因子,以指示时隙中连续相同的SRS传输(OFDM符号)的数量。对于频率跳跃配置,Repetition 必须小于SRS符号的数量。

srs = nrSRSConfig;
srs.NumSRSSymbols = 4;
srs.Repetition = 1;
srs.SymbolStart = 8; % Time-domain position of the SRS in the slot. (8...13) for normal cyclic prefix (CP) and (6...11) for extended CP
srs.ResourceType =  "periodic";
srs.SRSPeriod = [2 0]; % Periodicity in slots (1,2,4,5,8,10,...)
srs.SRSPeriod(2) = 0; % Offset in slots must be smaller than the periodicity

下行控制信息(DCI)可以通过较高层参数 resourceType 触发非周期性SRS传输(参见TS 38.331第6.3.2节SRS-Config)。由于频率跳跃模式在每个时隙对于非周期性SRS资源类型会被重置,因此可以选择 srs.ResourceType = periodicsrs.ResourceType = semi-persistent SRS资源类型以启用时隙间频率跳跃,或者选择 srs.ResourceType = aperiodic 以禁用它。您可以通过使用属性 SRSPeriod 配置SRS传输的时隙周期性和偏移量。对于非周期性资源类型,参数 SRSPeriod 控制触发非周期性SRS传输的DCI信号的周期性和偏移量。


在这里插入图片描述

我来解释一下上面的参数是如何对应这张图的,首先 srs.SymbolStart = 8; 可以看到起始符号是 #8,srs.SRSPeriod = [2 0]; 是一个 1 × 2 1\times 2 1×2 的矩阵,可以看 srs.SRSPeriod(1) = 2; 这意味着相邻两个OFDM时隙,所以第2个SRS组开始于OFDM符号 #36;同时 srs.SRSPeriod(2) = 0; 意味着没有时隙偏移,所以第一组SRS开始于OFDM符号 #8

% Offset in slots must be smaller than the periodicity 这段注释意味着 srs.SRSPeriod(2) 一定要小于 srs.SRSPeriod(1)


srs.CSRS = 19; % Bandwidth configuration C_SRS (0...63)
srs.BSRS = 1;  % Bandwidth configuration B_SRS (0...3)
srs.BHop = 0;  % Frequency hopping configuration (0...3). Set BHop >= BSRS to disable frequency hopping
srs.NRRC = 14; % Frequency domain position in blocks of 4 PRB (0...67)

% Create and display a multi-slot resource grid containing SRS
duration = 2*srs.SRSPeriod(1); % Transmission length in slots
hSRSGrid(carrier,srs, duration, true);
title('Carrier Grid Containing Frequency-Hopping SRS')

SRS符号跳跃的带宽随着 CSRS 的值增加而增大,随着BHop 的增加而减小(直到 BHop = BSRS 时禁用跳跃)。增加BSRS会减少每个OFDM符号分配的带宽(属性NRBPerTransmission),并且还可能减少时隙内的频率跳跃。要禁用频率跳跃,设置BHop >= BSRS。对于非跳跃配置,CSRS和BSRS的作用是类似的,因为分配的带宽随着CSRS的增加而增加,随着BSRS的增加而减少。

您可以使用带宽配置表(TS 38.211 表6.4.1.4.3-1)来计算由SRS参数 NRRC 配置的不同频率跳跃模式的数量,公式为 N F H P = N B H o p + 1 ⋯ N B S R S \mathrm{NFHP = N_{BHop+1} \cdots N}_{B_{SRS}} NFHP=NBHop+1NBSRS。当 N R R C > N F H P ⋅ N R B T / 4 \mathrm{NRRC > NFHP \cdot NRB}_T / 4 NRRC>NFHPNRBT/4 时,频率跳跃模式会重复。

N = hSRSNumberOfSubbandsOrHoppingPatterns(srs);

if srs.BHop < srs.BSRS && srs(1).NRB > 16 % Number of unique frequency-hopping patterns
    fprintf('Number of unique frequency-hopping patterns (configurable by NRRC < %d): %d.',N*srs.NRBPerTransmission/4,N);
else % Number of unique SRS subbands 
    fprintf('Number of unique SRS subbands (configurable by NRRC < %d):  %d.',N*srs.NRBPerTransmission/4,N);
end

设置带宽配置参数为 CSRS = 20BSRS = 2BHop = 1。条件 BHop < BSRS 并不保证频率跳跃。然而,相反的情况是:BHop>=BSRS 总是禁用频率跳跃。您可以使用带宽配置表中的 N b N_b Nb 参数来确定何时SRS带宽配置(CSRSBSRSBHop)产生频率跳跃,并评估条件 N F H P = N B H o p + 1 ⋯ N B S R S > 1 NFHP = N_{BHop+1} \cdots N_{BSRS} > 1 NFHP=NBHop+1NBSRS>1

N = hSRSNumberOfSubbandsOrHoppingPatterns(srs);

if srs.BHop < srs.BSRS && srs(1).NRB > 16 % Number of unique frequency-hopping patterns
    fprintf('Number of unique frequency-hopping patterns (configurable by NRRC < %d): %d.',N*srs.NRBPerTransmission/4,N);
else % Number of unique SRS subbands 
    fprintf('Number of unique SRS subbands (configurable by NRRC < %d):  %d.',N*srs.NRBPerTransmission/4,N);
end

在频率跳跃情况下,唯读属性 NRB 指定SRS跳跃的带宽,NRBPerTransmission 指定每个SRS OFDM符号分配的瞬时带宽。

Multi-User Configurations

本节解释了如何配置适用于多用户设置的多个SRS传输。您可以使用时域、频域和序列域参数来创建一组正交(无干扰)SRS传输。

Time-Domain Orthogonal SRS

您可以通过多种方式创建时域正交SRS传输,例如:

  • 使用属性SRSPeriod配置不同的时隙周期性和偏移量,以适应不同的SRS。
  • 使用属性SymbolStart为不同的SRS配置不同的符号级别时域分配。

Cyclic-Shift Orthogonal SRS

本节生成多个分配到相同时间和频率资源(OFDM符号和子载波)但具有不同时间域循环移位的SRS。由于Zadoff-Chu序列的特性,这种配置产生了正交SRS。为了展示配置的SRS之间的正交性,本节执行CP-OFDM调制并计算时域波形的互相关。

% Configure a 10 MHz bandwidth carrier with 15 kHz SCS.
carrier = nrCarrierConfig;
carrier.NSizeGrid = 52;
carrier.SubcarrierSpacing = 15;

% Create a full-band SRS
srs = nrSRSConfig;
srs.CSRS = hSRSBandwidthConfiguration(srs,carrier.NSizeGrid);

% All SRS share the same physical resources, but they are configured with
% different cyclic shifts.
for i = 1:8
    srs(i) = srs(1);
    srs(i).CyclicShift = i-1;
end

% Create a resource grid containing SRS
numSlots = 1; % Number of slots to generate
for ich = length(srs):-1:1
    slotGrid{ich} = hSRSGrid(carrier,srs(ich),numSlots);
end

% Get OFDM modulation related information
ofdmInfo = nrOFDMInfo(carrier);

% OFDM modulation
nsrs = length(srs); % Number of SRS waveforms
numSamples = numSlots*ofdmInfo.SampleRate/1000/carrier.SlotsPerSubframe;
txWaveform = zeros(numSamples,srs(1).NumSRSPorts,nsrs);
for i = 1:nsrs
    txWaveform(:,:,i) = nrOFDMModulate(carrier,slotGrid{i});
end

% Cross correlation of SRS waveforms generated with different cyclic shifts
txWaveform = reshape(txWaveform,[],nsrs*srs(1).NumSRSPorts);
C = txWaveform'*txWaveform;
srsCorr = C./diag(C);

此图显示了具有不同循环移位的SRS波形的时域互相关性

imagesc(abs(srsCorr))
title('Correlation of SRS with Different CyclicShift')
xlabel('SRS configuration'); ylabel('SRS configuration');
colorbar

在这里插入图片描述

disp('Absolute value of correlation matrix: '); disp(' '); disp(abs(srsCorr));

Absolute value of correlation matrix:

1.0000    0.0027    0.0021    0.0008    0.0003    0.0010    0.0007    0.0038
0.0027    1.0000    0.0030    0.0006    0.0006    0.0001    0.0006    0.0005
0.0021    0.0030    1.0000    0.0041    0.0007    0.0008    0.0003    0.0008
0.0008    0.0006    0.0041    1.0000    0.0040    0.0004    0.0009    0.0000
0.0003    0.0006    0.0007    0.0040    1.0000    0.0039    0.0002    0.0009
0.0010    0.0001    0.0008    0.0004    0.0039    1.0000    0.0039    0.0003
0.0007    0.0006    0.0003    0.0009    0.0002    0.0039    1.0000    0.0039
0.0038    0.0005    0.0008    0.0000    0.0009    0.0003    0.0039    1.0000

Summary and Further Exploration

本示例描述了如何生成并映射SRS序列到OFDM载波资源网格中,以及如何为多个载波和SRS配置生成相应的波形。该示例突出了SRS配置参数与其对资源网格和SRS波形属性影响之间的关系。例如:

  • 分配给SRS的带宽通常随着CSRS的增加而增大,随着BSRS的增加而减小。对于频率跳跃配置,瞬时带宽和跳跃带宽分别随着BSRS和BHop的增加而减小。

  • SRS的频率位置取决于FrequencyStart和NRRC参数。NRRC允许选择不同的SRS子带和频率跳跃模式。

  • BHop < BSRS 通常会产生频率跳跃,但这并不保证。然而,BHop >= BSRS 足以禁用频率跳跃。

  • 时隙间频率跳跃仅对周期性和半持久性资源类型有效。

  • 可以使用时域、频域和序列相关的参数来创建正交的SRS传输。

示例还演示了如何从SRS带宽配置表和唯读属性中提取有用的信息,例如NRRC可以配置的SRS子带和频率跳跃模式的数量。

多端口配置的SRS序列生成采用了在循环移位正交SRS中介绍的正交化机制。为了验证多个端口之间的正交性,配置一个多端口SRS,生成符号和索引,将符号映射到资源网格中,生成SRS波形,并计算为不同端口生成的波形之间的互相关。

References

  • [1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
  • [2] 3GPP TS 38.331. “NR; Radio Resource Control (RRC) protocol specification.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

http://www.kler.cn/a/597160.html

相关文章:

  • 天津大学:《2025深度解读DeepSeek:原理与效应》|44页|附PPT下载方法
  • 基于AWS Endpoint Security(EPS)的自动化安全基线部署
  • 破局 MySQL 死锁:深入理解锁机制与高效解决方案
  • LangChain组件Tools/Toolkits详解(5)——返回产出artifact
  • k8s调度的过程,各组件之间的配合解析
  • Ubuntu实时读取音乐软件的音频流
  • Flutter中常用命令
  • 矩阵篇---矩阵的应用
  • 常考计算机操作系统面试习题(三上)
  • 【Go】map数据类型
  • React 中的错误边界(Error Boundaries),如何使用它们捕获组件错误
  • Java 之「单调栈」:从入门到实战
  • 专访成都昭音科技Jackal:AI内容营销助力中企走向全球
  • AndroidFramework 生成 ota_update.zipadb验证OTA
  • JAVA学习*内部类
  • 通过webrtc+canvas+css实现简单的电脑滤镜拍照效果
  • 告别 ResultSet 的烦恼:使用 Apache DBUtils 和 ArrayList 优化数据管理
  • 机器学习knnlearn1
  • 嵌入式硬件工程师从小白到入门-原理图(三)
  • YOLO编程:开启计算机视觉的神奇之门