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

Python库2——Matplotlib2

上一篇文章主要介绍了Matplotlib库中的Pyplot模块中几大常见图像的绘制,包括自行修改图像的属性,在绘制图像时会自动创建一个图形窗口来展现这些图像。本节内容继续讲讲这个(Figure)图像窗口即其一些常见用法。

其他python库链接:python函数库_Gu_shiwww的博客-CSDN博客
Matplotlib1:Python库2——Matplotlib1-CSDN博客

3 Figure对象

        在Matplotlib中,Figure对象用于表示整个图形窗口,包括所有的子图(Axes)、标题、图例等。
        其中子图Axes是进行数据绘制和设置坐标轴等操作的核心区域,它与Figure对象密切相关,共同构建了完整的绘图体系;其中Figure相当于是一个画框,axes相当于是画板上的一个子图。

3.1 Figure对象的创建

figure对象的创建有两种方式:

  • 隐式创建:当直接调用绘图函数(plot、bar、hit等)而没有预先创建Figure对象时,Matplotlib会自动隐式创建一个Figure对象和Axes对象。
  • 显式创建:有两种方式:
    • 使用pyplot模块中的figure函数(重点)
    • 使用figure模块中的Figure类

plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=Figure, clear=False, **kwargs)

功能:用于创建一个新的图形窗口或激活一个已有的图形窗口

参数:num (intstr, 可选):图形的编号或名称。如果为 None 或省略,则创建一个新的图形窗口,并为其分配一个自动增加的编号。如果为整数,则尝试重用具有该编号的图形窗口。如果为字符串,则尝试重用具有该名称的图形窗口。

        figsize (tuple):图形的宽度和高度(单位为英寸)

        dpi (int):图形的分辨率(每英寸点数)。

        facecolor :图形的背景颜色。

        edgecolor :图形的边框颜色。不常用效果不明显

        frameon (bool):是否显示图形的边框。默认为 True

        FigureClass (type):用于创建图形的类。默认为 matplotlib.figure.Figure。通常不需要更改此参数。

        clear (bool):如果为 True,则清除当前图形的内容(如果存在)。默认为 False

        *kwargs**:其他关键字参数将传递给 Figure 类的构造函数。这允许你设置 Figure 对象的其他属性,如 tight_layout、constrained_layout 等。

返回值: Figure 对象,代表创建的图形窗口

import matplotlib.pyplot as plt
import numpy as np# 隐式创建Figure对象
x = np.arange(0, 2 * np.pi, 0.1)
y = np.sin(x)
plt.plot(x, y)# 显式创建figure对象,num=2重用原有的窗口,dpi分辨率,facecolor:背景色,clear:清除图像
fig = plt.figure(num=2, dpi=100, facecolor='g', clear=True)plt.show()

3.2 Figure类中的常用函数

3.2.1 add_subplot

fig.add_subplot(nrows, ncols, index, **kwargs)

功能:在figure中添加子图

参数:nrows: 子图的行数。

           ncols: 子图的列数。

           index: 子图的位置索引(从1开始,按行优先顺序编号)。

返回值:Axes对象

import matplotlib.pyplot as plt
import numpy as npfig = plt.figure()
# 通过add_subplot添加子图
fig.add_subplot(1, 2, 1)
x = np.arange(0, 2 * np.pi, 0.1)
y = np.sin(x)
plt.plot(x, y)# 通过add_subplot函数添加第二幅子图
fig.add_subplot(1, 2, 2)
y = np.cos(x)
plt.plot(x, y)plt.show()

注意:add_subplot函数可以将整个figure画布分割成n行m列,每一块都是一个子图,但是该函数也只能分割成n行m列,若想将被分割后的某一行融合成一个子图进行使用,需要利用另一个函数(后续会学到)(add_subplot函数存在返回值,可以通过一个变量接受该返回值,之后便可以通过该变量访问到该子图)

图例:

3.2.2 suptitle

fig.suptitle(t, **kwargs)

功能:在figure图形上添加一个中心对齐的标题,位于所有子图的顶部

参数:t:字符串

import matplotlib.pyplot as plt
import numpy as np# 添加大标题,fontsize:字体大小,color:字体颜色
fig.suptitle('sin&cos', fontsize=16, color='g')

3.2.3 add_axes

fig.add_axes(rect, **kwargs)

功能:在figure中任意位置添加一个自定义大小的子图

参数:     rect:位置和尺寸,格式通常为 [left, bottom, width, height],值在0到1之间,表示相对于图形尺寸的比例。

                left:距figure左边界的比例 bottom:底部边界的比例

                width:宽 height:高

        **kwargs: 传递给Axes构造函数的额外参数。

返回值:Axes对象

import matplotlib.pyplot as plt
import numpy as np# 自定义子图的位置[左边距,上边距,宽度,高度](0-1之间)
fig = plt.figure()
fig.add_axes([0.2, 0.2, 0.7, 0.7])
x = np.arange(0, 2 * np.pi, 0.1)
y = np.sin(x)
plt.plot(x,y)plt.show()

图例:可以看到该图像并不在整个画布的正中央,左上边距我们可以自行设置,宽度和高度也可自行设置,需要注意的点是,这四个值都必须是大于0小于1的值,可以理解为占整个画布的百分比,0.2就代表左边与整个画布左边框的空白面积占整个画布长的20%。

3.2.4 subplots_adjust

        该函数允许用户手动调整子图之间的空间,以及子图与图形边缘之间的空间。这个方法提供了比 `tight_layout` (上篇文章提过的函数)更精细的控制,特别适用于需要精确控制布局的情况。
fig.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

参数:left: 子图区域左边缘位置占图形的比例,范围从 01

           bottom:子图区域下边缘 位置占图形的比例,范围从 01

           right:子图区域右边缘位置占图形的比例,范围从 01

           top:子图区域上边缘位置占图形的比例,范围从 01

           wspace:子图之间的水平间距,(单位:子图宽度的比例)。

           hspace:子图之间的垂直间距,(单位:子图高度的比例)。

注意一些限制条件:

           left 和 right 的值必须满足 left < right。

           bottom 和 top 的值必须满足 bottom < top。

           如果设置的间距过大,可能会导致子图之间重叠或超出图形边界。

默认值:

         如果不设置某些参数,Matplotlib 会使用默认值。默认情况下,left=0.125,right=0.9,top=0.88,bottom=0.11,wspace=0.2,hspace=0.2

import matplotlib.pyplot as plt
import numpy as np# 创建Figure对象
fig = plt.figure()# 创建两个子图
fig.add_subplot(1,2,1)
x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)
plt.plot(x, y)fig.add_subplot(1,2,2)
y = np.cos(x)
plt.plot(x, y)
# 手动调整子图位置和间距
fig.subplots_adjust(0.2, 0.4, 0.9, 0.8, wspace=0.5)
plt.show()

注意:在subplots_adjust函数中right和top两个形参,要大于left和bottom两个形参,两个形参对应的比例实际是分别从左边框和下边框算起,0.8占的是左边框到有边框80%的面积,以下给带分别设置right属性为0.9(左)和0.4(右)的图例,可以更加直观感受到该比例

3.2.* add_axes和subplots_adjust的区别

        add_axes只能对单个子图进行大小和位置的调整,而subplots_adjust可以修改子图之间的间距和位置,是对整个子图集进行操作

3.2.5 get_size_inches和get_dpi

fig.get_size_inches
功能:获取图形的大小,以英寸为单位
返回值:获取到的大小值
fig.get_dpi()

功能:获取图像的DPI

返回值:获得到的DPI

以上两个函数无任何形参,返回值为对应的画布的属性

3.2.6 set_size_inches和set_dpi

        set_size_inches方法用于设置图形对象的大小,单位为英寸。这个方法允许用户在创建图形后改变其尺寸,从而影响输出图像的大小和显示效果。
fig.set_size_inches(width, height, forward=True)

参数:width, height:浮点数,指定图形的宽度和高度,单位为英寸。

        forward:布尔值,默认为True。如果为True,则在调整图形大小时,同时更新所有子图的大小和位置。如果为False,则仅改变图形的大小,而不更新子图

        set_dpi方法用于设置图形对象的DPI,DPI是每英寸点数(Dots Per Inch, DPI)。这个方法影响输出图像的质量和文件大小,通常与 `set_size_inches` 方法配合使用来精确控制图形的尺寸和输出质量.

        图像在未设置DPI时,DPI的值默认为100

fig.set_dpi(dpi)

3.2.7 clear

        在matplotlib的Figure类和Axes类中都含有clear函数,Axes对象主要用于清除该子图上的所有元素(包括线条、标记、文本、图像等),Figure对象是将清除整个图像的所有子图和其他相关的元素

3.3. Axes类中的常用函数

set_xlim(left, right):设置 x 轴的范围。

set_ylim(bottom, top):设置 y 轴的范围。

set_xlabel(label):设置 x 轴的标签。

set_ylabel(label):设置 y 轴的标签。

set_title(label):设置子图的标题。

Axes.text(x, y, s, **kwargs)

参数:x\y:文字的坐标

        s:设置的文本内容

        kwargs:其他可选的关键字参数,用于控制文本的样式,如

                fontsize(字体大小)、

                color(颜色)、

                horizontalalignment(水平对齐方式,如 ‘left’, ‘center’, ‘right’)、

                verticalalignment(垂直对齐方式,如 ‘top’, ‘center’, ‘bottom’)等。

import matplotlib.pyplot as plt
import numpy as npfig = plt.figure()
# 用变量ax接受分割的子图
ax = fig.add_subplot(1,2,1)# 设置x轴y轴的范围
ax.set_xlim(-3, 3)
ax.set_ylim(-5, 5)
# 设置x轴y轴的标签
ax.set_xlabel('x')
ax.set_ylabel('y')
# 设置子图标题
ax.set_title('line')
ax.plot([-3, -2, -1, 0, 1, 2], [-2, -1, 0, 1, 2, 3])
# 设置文本
ax.text(2, 3, 'y=x+1')plt.show()

将整个画布分割为两边,对左子图进行的修改,利用test可以在指定位置添加文本

4 绘制子图的方式

  • pyplot中函数subplot绘制子图,返回值为子图对象
  • Figure类中的函数add_subplot绘制子图,返回值为子图对象
  • pyplot中函数subplots绘制子图,返回值为Figure对象和子图对象数组
fig, ax = plt.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

功能:绘制多个子图,可以一次生成多个

参数:nrows和ncols:整数,表示子图的行数和列数。

           sharex和sharey:布尔值或字符串,表示是否共享x轴或y轴的属性。 可选值有TrueFalse'row''col'

           squeeze:布尔值,默认为True。当子图只有一个时,返回一个Axes对象而不是一个数组。False时返回一个二维数组

           width_ratios:列宽比例的序列,用于调整各列的宽度比

           height_ratios:行高比例的序列,用于调整各行的高度比

           subplot_kw:字典类型,可选参数。把字典的关键字传递给add_subplot()来创建每个子图。

           gridspec_kw:字典类型,可选参数。把字典的关键字传递给GridSpec构造函数创建子图放在网格里(grid)。

           **fig_kw:把所有详细的关键字参数传给figure()函数。

返回值:fig:这是整个图形的对象,可以对其进行全局设置,如标题、大小等。

             axes:这是一个数组,包含所有的子图。数组的形状由nrows和ncols决定。例如,如果 nrows=2 和 ncols=3,则 axes 将是一个 2x3 的数组,每个元素都是一个子图对象。

import matplotlib.pyplot as plt# 绘制子图,返回值包含Figure对象和Axes对象,Axes对象是一个数组,可以通过下标进行访问子图
fig, ax = plt.subplots(2, 2)# 通过下标访问对应子图
ax[0, 0].plot([2, 3], [4, 5])
ax[0, 1].plot([1, 1], [2, 1])# 为整个画布设置一个标题
fig.suptitle('sub')plt.show()

5 pyplot中的常用函数

5.1 gcf

功能:获取当前窗口的Figure对象,如果没有活动的图形,这个函数将创建一个新的图形,并将其作为当前活动的图形。通过此函数获取了当前图形的Figure对象后,可以调用Figure类中的相关操作

5.2 gca

功能:获取获取当前图形中的Axes对象
import matplotlib.pyplot as plt
import numpy as npx = np.arange(0, 2 * np.pi, 0.1)
y = np.sin(x)
plt.plot(x, y, label='sin')
plt.legend()
# 获取Figure对象
fig = plt.gcf()
fig.suptitle('sin')
# 获取Axes对象
ax = plt.gca()
ax.set_xlabel('x')plt.show()

上图中最中心的sin标题是通过fig.suptitle添加的,而右上角的sin是在调用plot时设置的默认label为'sin',利用legend函数可以使这一标题显现,若无该函数默认隐藏

5.3 savefig

        matplotlib.pyplot 模块中的 savefig 函数用于将当前图形保存到文件中。
plt.savefig(*args, **kwargs)

参数:fname:字符串或类似文件的对象,指定保存文件的路径或文件名。可以是相对路径或绝对路径。如果文件扩展名缺失,将使用默认格式(通常是 PNG)。

        dpi:可选,指定保存图像的dpi(每英寸点数)。默认值是figure.dpi。

        format:可选,指定文件格式(如 'png', 'pdf', 'svg', 'ps', 'eps', ...)。如果省略,将使用文件扩展名推断格式。

        bbox_inches:可选,指定裁剪框,可以是 'tight''standard' 或一个 Bbox 对象。默认为 'standard'tight:保存的图形文件中不会有不必要的空白边缘,使得图形更加紧凑和整洁

        pad_inches:可选,指定边框填充量(以英寸为单位)。默认为 0.1。

        facecolor:可选,指定图像的背景颜色。默认为 'w'(白色)。

        edgecolor:可选,指定图像边框的颜色。默认为 'w'(白色)。

        orientation:可选,指定页面方向('portrait''landscape'),仅对保存为 PDF 文件时有效。

        papertype:可选,指定纸张类型(如 'a4', 'letter'),仅对保存为 PDF 文件时有效。

        format_kwargs:可选,其他与格式相关的关键字参数。

        metadata:可选,指定要写入文件的元数据。

        pil_kwargs 和 pdf_kwargs:可选,特定于 PIL 或 PDF 格式的参数。

import matplotlib.pyplot as plt
import numpy as npx = np.arange(0, 2 * np.pi, 0.1)
y = np.sin(x)
plt.plot(x, y, label='sin')
plt.legend()y = np.cos(x)
plt.plot(x, y, label='cos')
plt.legend()
# 隐藏坐标轴
plt.axis('off')
# 保存图片
plt.savefig('./sin.png')

5.4 inshow

imshow() 函数是 Matplotlib.pyplot 库中的一个函数,它常用于绘制二维的灰度图像或彩色图像,也可以用于绘制矩阵、热力图、地图等。
imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, *, data=None, **kwargs)

参数:X:图像数据。这通常是一个二维数组(灰度图像)或一个三维数组(彩色图像,其中第三维是颜色通道)。对于二维数组,可以使用 cmap 参数来指定颜色映射

           cmap:颜色映射。用于控制图像中不同数值所对应的颜色。默认颜色是'viridis',也可以设置其他颜色,如`gray`、`hot`、`jet`、'binary'

          norm:用于将数据值标准化到 [0, 1] 区间。以便与颜色映射一起使用。如果为 None,则数据将直接用于颜色映射。

           aspect:控制图像宽高比,'auto'(默认,根据数据形状自动调整)、'equal'(使像素为正方形)或数字(指定宽高比)

           interpolation:插值方法。用于控制图像的平滑程度和细节程度。可以选择`nearest`、`bilinear`、`bicubic`等插值方法。

           alpha:图像透明度。取值范围为0~1

           origin:坐标轴原点的位置。可以设置为`upper`或`lower`。

           extent:控制显示的数据范围。可以设置为`[xmin, xmax, ymin, ymax]`。

           vmin、vmax:控制颜色映射的值域范围。

        filternorm 和 filterrad:用于图像滤波的对象。可以设置为`None`、`antigrain`、`freetype`等。

imlim: 用于指定图像显示范围。

           resample:用于指定图像重采样方式。

           url:用于指定图像链接。

plt.colorbar()

功能:显示颜色柱

5.5 imsave

用于将图像数据保存到磁盘上的函数
matplotlib.pyplot.imsave(fname, arr, **kwargs)

参数:fname:保存图像的文件名,可以是相对路径或绝对路径。

           arr:表示图像的NumPy数组。

           kwargs:可选参数,用于指定保存的图像格式以及图像质量等参数。

5.* imsave和savefig的区别

savefig可以将绘制的图像保存成文件,包含坐标、标题、图例等

imsave是将二维或三维数据保存成图像文件,不含坐标等,它没法直接保存plot等绘制的图像

import matplotlib.pyplot as plt
import numpy as nparr = np.array([[1,2,3,1], [2,3,1,2]])
# 绘制二维或三维数据图像,通过cmap进行颜色映射
plt.imshow(arr, cmap='gray')
plt.imsave('./test.png', arr)
plt.show()

5.6 imread

        imread() 方法是 Matplotlib 库中的一个函数,用于从图像文件中读取图像数据。

        imread() 方法返回一个 numpy.ndarray 对象,其形状是 (nrows, ncols, nchannels),表示读取的图像的行数、列数和通道数:

  1. 如果图像是灰度图像,则 nchannels 为 1。
  2. 如果是彩色图像,则 nchannels 为 3 或 4,分别表示红、绿、蓝三个颜色通道和一个 alpha 通道;为3时表示红绿蓝,为4时表示红绿蓝、透明度

matplotlib.pyplot.imread(fname, format=None)

参数:fname:指定了要读取的图像文件的文件名或文件路径,可以是相对路径或绝对路径。

           format:参数指定了图像文件的格式,如果不指定,则默认根据文件后缀名来自动识别格式。

返回值:numpy.ndarray 对象

import matplotlib.pyplot as plt# map为在当前文件路径下博主自己导入的一幅图片,返回一个ndarray数组被arr接收
arr = plt.imread('map.png')
plt.imshow(arr)
plt.show()

5.7 close

plt.close(fig=None)

功能:该函数用于关闭一个或多个打开的图形窗口,释放资源

参数:fig:指定要关闭的图形,可以是Figure对象,也可以是图形对应的整数

           all:关闭所有图形,如果参数省略,关闭当前图像

5.8 Line2D类函数

        plt.plot函数的返回值表示包含一个或多个 Line2D 对象(有多条线时会返回多个Line2D对象)

        Line2D 是 Matplotlib 中用于表示二维线条的类。通过返回 Line2D 对象,你可以访问和修改线条的各种属性,例如颜色、线型、标签等。这使得 plt.plot() 不仅仅是绘制图形,还可以让你对绘制的线条进行进一步的定制。

5.8.1 get_label

        该方法用于获取图像的标签(参数中指定的label值)。这个方法通常用于获取已经设置好的标签,以便于后续的检查或修改.

5.8.2 get_data

        该函数功能为用于动态更新线条的 x 和 y 数据。主要在需要实时更新图形(例如动画)的场景中。
Line2D.set_data(xdata, ydata)
        调用该方法后,图形会根据新的数据重新绘制。它不会自动刷新图形,但可以与 plt.draw() 或 plt.pause() 等方法结合使用,以实现动态更新的效果。

5.9 pause

        用于在绘图时暂停程序执行,并在指定的时间间隔后继续执行。它常用于动态更新图形或创建简单的动画效果。
        函数的作用:
  • 暂停程序:plt.pause(interval) 会暂停程序的执行,暂停的时间由参数 interval(单位为秒)决定。
  • 刷新图形窗口:在暂停期间,plt.pause() 会强制刷新图形窗口,显示最新的图形内容。这使得它特别适合用于动态更新图形的场景。

函数原型:

pyplot.pause(interval)

参数:interval:时间,秒

import matplotlib.pyplot as plt
import numpy as npx = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)
# plot函数返回的是Line2D对象的列表,用于进一步操作和定制图形中的线条,这些数据属于一个元素,因此在接收时会返回一个含有一个元素的列表
# Line2D对象作为元素存在与列表中,想要获取该元素需要对列表进行序列解包(ld,的过程便是执行这一操作)
# 此时ld内部存储的是plot函数操作后返回的Line2D对象
ld, = plt.plot(x, y, label='sin')# 获取图像中label数据
ret = ld.get_label()
print(ret)y = np.cos(x)
# 根据指定的时间暂停程序,5秒后执行下一步,即去修改ld中的数据
plt.pause(5)
# 修改原图像的数据
ld.set_data(x, y)plt.show()

6 绘制子图网格

        使用模块gridspec中的函数GridSpec绘制

        在 Matplotlib 中,GridSpec 对象提供了一种灵活的方式来创建子图网格(subplots grid),允许子图跨越多个行和列,以及具有不均匀的行高和列宽。

from matplotlib.gridspec import GridSpec

GridSpec(nrows, ncols, figure=None, left=None, right=None, bottom=None, top=None, wspace=None, hspace=None, width_ratios=None, height_ratios=None, w_pad=None, h_pad=None)

参数:nrows: int子图网格的行数。

           ncols: int子图网格的列数。

           figure: matplotlib.figure.Figure,

                   optional,

                   default: None

                   指定的图形对象。如果未提供,则默认创建一个新的图形对象。

           left: float, optional, default: None子图网格左侧的相对位置(01 的比例)。如果未指定,则使用默认的左边界。

           right: float, optional, default: None子图网格右侧的相对位置(01 的比例)。如果未指定,则使用默认的右边界。

           bottom: float, optional, default: None子图网格底部的相对位置(01 的比例)。如果未指定,则使用默认的底边界。

           top: float, optional, default: None子图网格顶部的相对位置(01 的比例)。如果未指定,则使用默认的顶边界。

           wspace: float or None, optional, default: None子图之间的水平间距(以英寸为单位)或作为子图宽度的比例。如果未指定,则使用默认的间距。

           hspace: float or None, optional, default: None子图之间的垂直间距(以英寸为单位)或作为子图高度的比例。如果未指定,则使用默认的间距。

           width_ratios: list of floats, optional, default: None指定每一列的宽度比例。如果指定,则 ncols 必须与列表长度匹配。

           height_ratios: list of floats, optional, default: None指定每一行的高度比例。如果指定,则 nrows 必须与列表长度匹配。

           w_pad: float, optional, default: None子图之间的水平填充(以英寸为单位)。如果未指定,则使用默认的填充。

           h_pad: float, optional, default: None子图之间的垂直填充(以英寸为单位)。如果未指定,则使用默认的填充。

import matplotlib.pyplot as plt
import numpy as npimport matplotlib.gridspec as gs
fig = plt.figure()# 添加子图网格
gs = gs.GridSpec(2, 3)
# 在第一行添加三个子图
fig.add_subplot(gs[0, 0])
fig.add_subplot(gs[0, 1])
fig.add_subplot(gs[0, 2])
# 在第二行添加一个子图
fig.add_subplot(gs[1, :])plt.show()

http://www.xdnf.cn/news/19479.html

相关文章:

  • JAVA EE初阶 4:文件操作和IO
  • PCIe 6.0 vs 5.0:带宽翻倍背后的技术革新与应用前景
  • 防护墙技术(一):NAT
  • 粒子群优化算法(PSO)
  • 从分子工具到技术革新:链霉亲和素 - 生物素系统与 M13 噬菌体展示的交叉应用解析
  • 项目管理方法适用场景对比
  • 每k个节点一组反转链表
  • 11 C 语言 sizeof 与指针实战指南:一维 / 二维数组计算注意事项 + 笔试真题解析 + sizeof strlen 对比
  • Python数据处理
  • MYSQL表结构优化场景
  • AI 赋能综合能源管理系统:开启智慧能源新时代
  • 深入理解 Rockchip 平台 DTS 中的 UART3 引脚配置
  • Web开发-JavaEE应用原生和FastJson反序列化URLDNS链JDBC链Gadget手搓
  • Photoshop - Ps 编辑图像
  • 深思熟虑智能体:基于 tencent youtu-agent 的五阶段投资研究系统
  • 第一个SpringBoot程序
  • 字数统计器和文本AI处理,非常好用
  • HBase高效并发锁:IdLock极简内存设计
  • 世界模型 World Models概述
  • 计算机算术8-浮点加法
  • uart学习
  • 基于FPGA的简易医疗呼叫器实现,包含testbench
  • 基于单片机智能垃圾桶/垃圾分类/语音垃圾桶
  • 内存模型(Memory Model)是什么?
  • 数据结构(顺序表力扣刷题)
  • 科技信息差(8.30)
  • GLM-Zero:智谱AI最新推出的AI深度推理模型
  • I2C多点触控驱动开发详解
  • shell脚本第五阶段---shell函数与正则表达式
  • 大模型训练中的 logits 是什么