HDLBits中文版,标准参考答案 | 3.2.5 Finite State Machines | 有限状态机(5)

news2024/11/25 18:35:54

关注 望森FPGA  查看更多FPGA资讯

这是望森的第 20 期分享

作者 | 望森
来源 | 望森FPGA

目录

1 Q6b: FSM next-state logic | Q6b:FSM 下一状态逻辑

2 Q6c: FSM one-hot next-state logic | Q6c:FSM 独热下一状态逻辑

3 Q6: FSM

4 Q2a: FSM

5 Q2b: One-hot FSM equations| Q2b:独热 FSM 方程

6 Q2a: FSM

7 Q2b: Another FSM | Q2b:另一个 FSM


本文中的代码都能够正常运行,请放心食用😋~

练习的官方网站是:https://hdlbits.01xz.net/

注:作者将每个练习的知识点都放在了题目和答案之后


1 Q6b: FSM next-state logic | Q6b:FSM 下一状态逻辑

题目:

考虑下面所示的状态机,它有一个输入 w 和一个输出 z。

假设您希望使用三个触发器和状态代码 y[3:1] = 000、001、...、101 分别实现 FSM,分别表示状态 A、B、...、F。显示此 FSM 的状态分配表。为触发器 y[2] 推导下一状态表达式。

仅为 y[2] 实现下一状态逻辑。(这更像是一个 FSM 问题,而不是 Verilog 编码问题。)

答案:

module top_module (
    input [3:1] y,
    input w,
    output Y2);

    parameter A  = 3'b000;
    parameter B  = 3'b001;
    parameter C  = 3'b010;
    parameter D  = 3'b011;
    parameter E  = 3'b100;
    parameter F  = 3'b101;
    
    reg [3:1] next_state;
    
    wire A2B,A2A;
    wire B2C,B2D;
    wire C2E,C2D;
    wire D2F,D2A;
    wire E2E,E2D;
    wire F2C,F2D;
    
    //状态跳转控制
    always @(*) begin
        case(y)
            A : begin
                if (A2B)begin
                    next_state = B;
                end
                else if (A2A)begin
                    next_state = A;
                end
            end
            B : begin
                if (B2C)begin
                    next_state = C;
                end
                else if (B2D)begin
                    next_state = D;
                end
            end
            C : begin
                if (C2E)begin
                    next_state = E;
                end
                else if (C2D)begin
                    next_state = D;
                end
            end
            D : begin
                if (D2F)begin
                    next_state = F;
                end
                else if (D2A)begin
                    next_state = A;
                end
            end
            E : begin
                if (E2E)begin
                    next_state = E;
                end
                else if (E2D)begin
                    next_state = D;
                end
            end
            F : begin
                if (F2C)begin
                    next_state = C;
                end
                else if (F2D)begin
                    next_state = D;
                end
            end
            default next_state = A;
        endcase
    end
    
    //状态跳转控制条件
    assign A2B        = w == 0;
    assign A2A        = w == 1;
    assign B2C        = w == 0;
    assign B2D        = w == 1;
    assign C2E        = w == 0;
    assign C2D        = w == 1;
    assign D2F        = w == 0;
    assign D2A        = w == 1;
    assign E2E        = w == 0;
    assign E2D        = w == 1;
    assign F2C        = w == 0;
    assign F2D        = w == 1;

    //输出信号赋值
    always @(*) begin
        Y2 = next_state[2];
    end
    
endmodule

2 Q6c: FSM one-hot next-state logic | Q6c:FSM 独热下一状态逻辑

题目:

考虑下面所示的状态机,它有一个输入 w 和一个输出 z。

对于此部分,假设使用独热码,状态分配为 'y[6:1] = 000001、000010、000100、001000、010000、100000,分别表示状态 A、B、...、F。

为下一状态信号 Y2 和 Y4 编写逻辑表达式。(通过检查得出逻辑方程,假设独热编码。测试台将使用非独热输入进行测试,以确保您不会尝试执行更复杂的操作)。

答案:

module top_module (
    input [6:1] y,
    input w,
    output Y2,
    output Y4);
    
    //y[1] = A;
    //y[2] = B;
    //y[3] = C;
    //y[4] = D;
    //y[5] = E;
    //y[6] = F;
    reg [6:1] next_state;
    
    //状态跳转控制
    always @(*) begin
        next_state[1] = (y[1] && w == 1) || (y[4] && w == 1);
        next_state[2] = (y[1] && w == 0);
        next_state[3] = (y[2] && w == 0) || (y[6] && w == 0);
        next_state[4] = (y[2] && w == 1) || (y[3] && w == 1) || 
        (y[5] && w == 1) || (y[6] && w == 1);
        next_state[5] = (y[5] && w == 0) || (y[3] && w == 0);
        next_state[6] = (y[4] && w == 0);
    end

    //输出信号赋值
    always @(*) begin
        Y2 = next_state[2];
        Y4 = next_state[4];
    end
    
endmodule

3 Q6: FSM

题目:

考虑下面所示的状态机,它有一个输入 w 和一个输出 z。

实现状态机。

答案:

module top_module (
    input clk,
    input reset,     // synchronous reset
    input w,
    output z);

    parameter A  = 3'b000;
    parameter B  = 3'b001;
    parameter C  = 3'b010;
    parameter D  = 3'b011;
    parameter E  = 3'b100;
    parameter F  = 3'b101;
    
    reg [2:0] state, next_state;
    
    wire A2B,A2A;
    wire B2C,B2D;
    wire C2E,C2D;
    wire D2F,D2A;
    wire E2E,E2D;
    wire F2C,F2D;

    //状态跳转
    always @(posedge clk) begin
        if(reset)begin
            state <= A;
        end
        else begin
            state <= next_state;
        end
    end
    
    //状态跳转控制
    always @(*) begin
        case(state)
            A : begin
                if (A2B)begin
                    next_state = B;
                end
                else if(A2A)begin
                    next_state = A;
                end
            end
            B : begin
                if (B2C)begin
                    next_state = C;
                end
                else if(B2D)begin
                    next_state = D;
                end
            end
            C : begin
                if (C2E)begin
                    next_state = E;
                end
                else if(C2D)begin
                    next_state = D;
                end
            end
            D : begin
                if (D2F)begin
                    next_state = F;
                end
                else if(D2A)begin
                    next_state = A;
                end
            end
            E : begin
                if (E2E)begin
                    next_state = E;
                end
                else if(E2D)begin
                    next_state = D;
                end
            end
            F : begin
                if (F2C)begin
                    next_state = C;
                end
                else if(F2D)begin
                    next_state = D;
                end
            end
            default next_state = A;
        endcase
    end
    
    //状态跳转控制条件
    assign A2B = w == 0;
    assign A2A = w == 1;
    assign B2C = w == 0;
    assign B2D = w == 1;
    assign C2E = w == 0;
    assign C2D = w == 1;
    assign D2F = w == 0;
    assign D2A = w == 1;
    assign E2E = w == 0;
    assign E2D = w == 1;
    assign F2C = w == 0;
    assign F2D = w == 1;

    //输出信号
    assign z = (state == E) || (state == F);

endmodule

4 Q2a: FSM

题目:

考虑下面显示的状态图。

编写表示此 FSM 的完整 Verilog 代码。使用单独的 always 块表示状态表和状态触发器,如课程中所做的那样。使用连续赋值语句或 always 块(由您自行决定)描述 FSM 输出(称为 z)。分配您希望使用的任何状态代码。

答案:

module top_module (
    input clk,
    input reset,     // synchronous reset
    input w,
    output z);

    parameter A  = 3'b000;
    parameter B  = 3'b001;
    parameter C  = 3'b010;
    parameter D  = 3'b011;
    parameter E  = 3'b100;
    parameter F  = 3'b101;
    
    reg [2:0] state, next_state;
    
    wire A2A,A2B;
    wire B2D,B2C;
    wire C2D,C2E;
    wire D2A,D2F;
    wire E2D,E2E;
    wire F2D,F2C;

    //状态跳转
    always @(posedge clk) begin
        if(reset)begin
            state <= A;
        end
        else begin
            state <= next_state;
        end
    end
    
    //状态跳转控制
    always @(*) begin
        case(state)
            A : begin
                if (A2A)begin
                    next_state = A;
                end
                else if(A2B)begin
                    next_state = B;
                end
            end
            B : begin
                if (B2D)begin
                    next_state = D;
                end
                else if(B2C)begin
                    next_state = C;
                end
            end
            C : begin
                if (C2D)begin
                    next_state = D;
                end
                else if(C2E)begin
                    next_state = E;
                end
            end
            D : begin
                if (D2A)begin
                    next_state = A;
                end
                else if(D2F)begin
                    next_state = F;
                end
            end
            E : begin
                if (E2D)begin
                    next_state = D;
                end
                else if(E2E)begin
                    next_state = E;
                end
            end
            F : begin
                if (F2D)begin
                    next_state = D;
                end
                else if(F2C)begin
                    next_state = C;
                end
            end
            default next_state = A;
        endcase
    end
    
    //状态跳转控制条件
    assign A2A = w == 0;
    assign A2B = w == 1;
    assign B2D = w == 0;
    assign B2C = w == 1;
    assign C2D = w == 0;
    assign C2E = w == 1;
    assign D2A = w == 0;
    assign D2F = w == 1;
    assign E2D = w == 0;
    assign E2E = w == 1;
    assign F2D = w == 0;
    assign F2C = w == 1;

    //输出信号
    assign z = (state == E) || (state == F);

endmodule

5 Q2b: One-hot FSM equations| Q2b:独热 FSM 方程

题目:

该问题的状态图如下所示。

假设使用独热编码,状态分配为 y[5:0] = 000001(A)、000010(B)、000100(C)、001000(D)、010000(E)、100000(F)

为信号 Y1 写一个逻辑表达式,它是状态触发器 y[1] 的输入。

为信号 Y3 写一个逻辑表达式,它是状态触发器 y[3] 的输入。

(通过检查得出逻辑方程,假设使用独热编码。测试台将使用非独热输入进行测试,以确保您没有尝试执行更复杂的事情)。

答案:

module top_module (
    input [5:0] y,
    input w,
    output Y1,
    output Y3
);
    //y[0] = A;
    //y[1] = B;
    //y[2] = C;
    //y[3] = D;
    //y[4] = E;
    //y[5] = F;
    
    reg [5:0] next_state;
    
    //状态跳转控制
    always @(*) begin
        next_state[0] = (y[0] && w == 0) || (y[3] && w == 0);
        next_state[1] = (y[0] && w == 1);
        next_state[2] = (y[1] && w == 1) || (y[5] && w == 1);
        next_state[3] = (y[1] && w == 0) || (y[2] && w == 0) || 
        (y[4] && w == 0) || (y[5] && w == 0);
        next_state[4] = (y[2] && w == 1) || (y[4] && w == 1);
        next_state[5] = (y[3] && w == 1);
    end

    //输出信号赋值
    always @(*) begin
        Y1 = next_state[1];
        Y3 = next_state[3];
    end

endmodule

知识点:

提示:通过查看状态转换图的入边,可以推导出独热状态转换逻辑的逻辑方程。

注意:本题的信号声明为“input [5:0] y”。


6 Q2a: FSM

题目:

思考下面所示的状态图描述的 FSM:

此 FSM 充当仲裁电路,控制三个请求设备对某种资源的访问。每个设备通过设置信号 r[i] = 1 来请求资源,其中 r[i] 是 r[1]、r[2] 或 r[3]。每个 r[i] 都是 FSM 的输入信号,代表三个设备之一。只要没有请求,FSM 就保持在状态 A。当发生一个或多个请求时,FSM 决定哪个设备获得使用资源的授权,并切换到将该设备的 g[i] 信号设置为 1 的状态。每个 g[i] 都是 FSM 的输出。有一个优先级系统,其中设备 1 的优先级高于设备 2,而设备 3 的优先级最低。因此,例如,当 FSM 处于状态 A 时,如果设备 3 是唯一发出请求的设备,则设备 3 仅会收到授权。一旦设备 i 获得 FSM 的授权,只要其请求 r[i] = 1,该设备就会继续收到授权。

编写表示此 FSM 的完整 Verilog 代码。使用单独的 always 块表示状态表和状态触发器,如课程中所述。使用连续赋值语句或 always 块(由您自行决定)描述 FSM 输出 g[i]。分配您希望使用的任何状态代码。

答案:

优先级:

设备 1 > 设备 2 > 设备 3

代码:

module top_module (
    input clk,
    input resetn,    // active-low synchronous reset
    input [3:1] r,   // request
    output [3:1] g   // grant
); 

    parameter A  = 2'b00;
    parameter B  = 2'b01;
    parameter C  = 2'b10;
    parameter D  = 2'b11;
    
    reg [1:0] state, next_state;
    
    wire B2B,B2A;
    wire C2C,C2A;
    wire D2D,D2A;

    //状态跳转
    always @(posedge clk) begin
        if(!resetn)begin
            state <= A;
        end
        else begin
            state <= next_state;
        end
    end
    
    //状态跳转控制
    always @(*) begin
        case(state)
            A : begin
                if(r == 3'b000)begin
                    next_state = A;
                end
                else if(r[1])begin
                    next_state = B;
                end
                else if(r[2])begin
                    next_state = C;
                end
                else if(r[3])begin
                    next_state = D;
                end 
            end
            B : begin
                if (B2B)begin
                    next_state = B;
                end
                else if(B2A)begin
                    next_state = A;
                end
            end
            C : begin
                if (C2C)begin
                    next_state = C;
                end
                else if(C2A)begin
                    next_state = A;
                end
            end
            D : begin
                if (D2D)begin
                    next_state = D;
                end
                else if(D2A)begin
                    next_state = A;
                end
            end
            default next_state = A;
        endcase
    end
    
    //状态跳转控制条件
    assign B2B = (r[1]);
    assign B2A = (~r[1]);
    assign C2C = (r[2]);
    assign C2A = (~r[2]);
    assign D2D = (r[3]);
    assign D2A = (~r[3]);

    //输出信号
    assign g[1] = (state == B);
    assign g[2] = (state == C);
    assign g[3] = (state == D);

endmodule

知识点:

注意:本题为复位信号为“resetn”。


7 Q2b: Another FSM | Q2b:另一个 FSM

题目:

思考一个用于控制某种电机的有限状态机。FSM 具有来自电机的输入 x 和 y,并产生控制电机的输出 f 和 g。还有一个时钟输入,称为 clk,以及一个复位输入,称为 resetn。

FSM 必须按如下方式工作。只要复位输入有效,FSM 就保持在起始状态,称为状态 A。当复位信号无效时,在下一个时钟沿之后,FSM 必须在一个时钟周期内将输出 f 设置为 1。然后,FSM 必须监视 x 输入。当 x 在三个连续的时钟周期内产生值 1、0、1 时,应在下一个时钟周期将 g 设置为 1。在保持 g = 1 的同时,FSM 必须监视 y 输入。如果 y 在最多两个时钟周期内具有值 1,则 FSM 应永久保持 g = 1(即,直到复位)。但如果 y 在两个时钟周期内没有变为 1,那么 FSM 应该永久设置 g = 0(直到重置)。

答案:

1.状态转换图

2.代码

module top_module (
    input clk,
    input resetn,    // active-low synchronous reset
    input x,
    input y,
    output f,
    output g
); 
    parameter A         = 4'd0;
    parameter START     = 4'd1;
    parameter S0        = 4'd2;
    parameter S1        = 4'd3;
    parameter S2        = 4'd4;
    parameter S3        = 4'd5;
    parameter S4        = 4'd6;
    parameter S5        = 4'd7;
    parameter S6        = 4'd8;
    
    reg [3:0] state, next_state;
    
    wire S02S0,S02S1;
    wire S12S2,S12S1;
    wire S22S0,S22S3;
    wire S32S4,S32S5;
    wire S42S6,S42S5;

    //状态跳转
    always @(posedge clk) begin
        if(!resetn)begin
            state <= A;
        end
        else begin
            state <= next_state;
        end
    end
    
    //状态跳转控制
    always @(*) begin
        case(state)
            A : begin
                next_state = START;
            end
            START : begin
                next_state = S0;
            end
            S0 : begin
                if (S02S0)begin
                    next_state = S0;
                end
                else if(S02S1)begin
                    next_state = S1;
                end
            end
            S1 : begin
                if (S12S2)begin
                    next_state = S2;
                end
                else if(S12S1)begin
                    next_state = S1;
                end
            end
            S2 : begin
                if (S22S0)begin
                    next_state = S0;
                end
                else if(S22S3)begin
                    next_state = S3;
                end
            end
            S3 : begin
                if (S32S4)begin
                    next_state = S4;
                end
                else if(S32S5)begin
                    next_state = S5;
                end
            end
            S4 : begin
                if (S42S6)begin
                    next_state = S6;
                end
                else if(S42S5)begin
                    next_state = S5;
                end
            end
            S5 : begin
                next_state = S5;
                end
            S6 : begin
                next_state = S6;
            end
            default next_state = A;
        endcase
    end
    
    //状态跳转控制条件
    // wire S02S0,S02S1;
    // wire S12S2,S12S1;
    // wire S22S0,S22S3;
    // wire S32S4,S32S5;
    // wire S42S6,S42S5;
    assign S02S0 = x == 0;
    assign S02S1 = x == 1;
    assign S12S2 = x == 0;
    assign S12S1 = x == 1;
    assign S22S0 = x == 0;
    assign S22S3 = x == 1;
    assign S32S4 = y == 0;
    assign S32S5 = y == 1;
    assign S42S6 = y == 0;
    assign S42S5 = y == 1;

    //输出信号
    assign f = (state == START);
        assign g = (state == S3) || (state == S4) || (state == S5);
endmodule

知识点:

提示:

直到 f 为 1 之后的周期,FSM 才开始监视 x 输入。


- END -

公z号/CSDN/知乎搜索【望森FPGA】,查看更多FPGA资讯~

相关推荐文章,点击跳转:

望森FPGA的HDLBits合集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R编程环境的搭建

【图书推荐】《R语言医学数据分析实践》-CSDN博客 R语言对编程环境的要求不高&#xff0c;可以在多种操作系统平台上运行&#xff0c;包括Windows、macOS和Linux。要运行R语言&#xff0c;需要安装R解释器。可以从R语言的官方网站下载和安装最新版本。R语言还需要一个集成开发…

【可答疑】基于51单片机的水位检测系统(含仿真、代码、报告、演示视频等)

✨哈喽大家好&#xff0c;这里是每天一杯冰美式oh&#xff0c;985电子本硕&#xff0c;大厂嵌入式在职0.3年&#xff0c;业余时间做做单片机小项目&#xff0c;有需要也可以提供就业指导&#xff08;免费&#xff09;~ &#x1f431;‍&#x1f409;这是51单片机毕业设计100篇…

postman变量,断言,参数化

环境变量 1.创建环境变量 正式环境是错误的&#xff0c;方便验证环境变化 2.在请求中添加变量 3.运行前选择环境变量 全局变量 能够在任何接口访问的变量 console中打印日志 console.log(responseBody);//将数据解析为json格式 var data JSON.parse(responseBody); conso…

HTML(七)表格

在HTML中&#xff0c;表格的标准形式如下&#xff1a; <table></table> 使用上面的语言&#xff0c;就已经生成了一个表格&#xff0c;只不过这个表格什么都没有 那么&#xff0c;该如何让表格存在东西呢&#xff1f; 首先&#xff0c;我们需要使用到<tr> …

sqli-labs less-26 空格绕过

空格绕过 过滤空格 用Tab代替空格%20 %09 %0a %0b %0c %0d %a0 //() 绕过空格注释符绕过//–%20//#–- -;%00; 空白字符绕过SQLite3 —— 0A,0D,0c,09,20 MYSQL 09,0A,0B,0B,0D,A0,20 PosgressSQL 0A,0D,0C,09,20 Oracle_11g 00,0A,0D,0C,09,20 MSSQL 01,02,03,04,05,06,07,…

python爬虫案例——selenium爬取淘宝商品信息,实现翻页抓取(14)

文章目录 1、任务目标2、网页分析3、代码编写3.1 代码分析3.2 完整代码1、任务目标 目标网站:淘宝(https://www.taobao.com/) 任务要求:通过selenium实现自动化抓取 淘宝美食 板块下的所有商品信息,并实现翻页抓取,最后以csv格式将数据保存至本地;如: 2、网页分析 首先…

Servlet[springmvc]的Servlet.init()引发异常

报错&#xff1a; 原因之一&#xff1a; web.xml配置文件中监听器导入依赖项错误

android——自定义控件(不停变化的textview、开关switch、动画效果的打勾)

一、从开始数字到结束数字&#xff0c;不断变化 import android.animation.TypeEvaluator; import android.animation.ValueAnimator; import android.content.Context; import android.util.AttributeSet; import android.view.animation.AccelerateDecelerateInterpolator;i…

OpenCV答题卡识别

文章目录 一、基本流程二、代码实现1.定义函数2.图像预处理&#xff08;1&#xff09;高斯模糊、边缘检测&#xff08;2&#xff09;轮廓检测&#xff08;3&#xff09;透视变换&#xff08;4&#xff09;阈值处理和轮廓检测 3.筛选和排序选项轮廓4.判断答案5.显示结果 三、总结…

ssm基于javaweb的数学竞赛网站的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 第1章 绪论 1 1.1选题动因 1 1.2目的和意义 1 1.3论文结构安排 2 第2章 开发环境与技术 …

Redis 缓存预热,缓存雪崩,缓存击穿,缓存穿透

Spring-data-redis 说明&#xff1a; 在 SpringBoot2.x 之后&#xff0c;原来使用的jedis 被替换为了 lettuce jedis : 采用的直连&#xff0c;多个线程操作的话&#xff0c;是不安全的&#xff0c;如果想要避免不安全的&#xff0c;使用 jedis pool 连接池 lettuce : 采用n…

云计算(第二阶段):mysql后的shell

第一章&#xff1a;变量 前言 什么是shell Shell 是一种提供用户与操作系统内核交互的工具&#xff0c;它接受用户输入的命令&#xff0c;解释后交给操作系统去执行。它不仅可以作为命令解释器&#xff0c;还可以通过脚本完成一系列自动化任务。 shell的特点 跨平台&#xff1a…

【LeetCode】动态规划—124. 二叉树中的最大路径和(附完整Python/C++代码)

动态规划—124. 二叉树中的最大路径和 题目描述前言基本思路1. 问题定义路径的限制&#xff1a; 2. 理解问题和递推关系核心思路&#xff1a;状态定义&#xff1a;递归公式&#xff1a; 3. 解决方法递归 动态规划方法伪代码&#xff1a; 4. 进一步优化5. 小总结 Python代码Pyt…

安装GraphRAG

安装GraphRAG 本文没有安装成功&#xff0c;一直卡在构建图节点。 我用的思路是GraphRAGOllama&#xff08;大语言模型&#xff09;Xinference&#xff08;词嵌入&#xff09;。找到的其他思路是&#xff0c;修改源码。 1 简介 1.1 GraphRAG GraphRAG是微软开源的一种基于…

鸿蒙开发 三十九 ArkTs类 class 静态属性和方法的定义

鸿蒙提供了static关键字&#xff0c;可以用static关键字修饰的属性和方法&#xff0c;用static修饰的属性和方法用类名.的方式调用&#xff0c;如下图&#xff1a; 在Robot方法中定义了静态的属性version&#xff0c;调用的话直接Robot.version就可以了&#xff0c;定义了方法&…

RabbitMQ消息队列MQ脑裂(网络分区)整理分析

文章目录 RabbitMQ 的集群架构基础什么是MQ脑裂检测网络分区RabbitMQ 网络分区导致脑裂的原因• 多个节点认为自己是主节点&#xff1a;• 节点间状态不一致&#xff1a;• 集群的不可用性和错误恢复&#xff1a; RabbitMQ 网络分区引发脑裂的常见场景队列镜像不同步HA&#xf…

人工智能的研究方法

一、人工智能是自然科学和社会科学的交叉学科 1、仿生学&#xff0c;生物构造和功能 2、运筹学&#xff0c;应用数学进行科学决策 3、控制论&#xff0c;通信与控制 4、认知科学&#xff0c;人脑或心智工件机制 5、哲学&#xff0c;世界观和方法论 6、数学&#xff0c;概…

Halcon Blob分析提取小光斑

文章目录 算子complement 返回一个区域的补集select_region_point 选择包含指定像素的所有区域intensity 计算灰度值的均值和偏差 案例 算子 complement 返回一个区域的补集 complement(Region : RegionComplement : : )Region (输入对象)&#xff1a;这指的是输入的一个或多…

[Linux] 软硬链接

软硬连接是两种链接方式,目的是通过使用一个已有的文件,在不进行拷贝的情况下,可以在不同的路径下访问同一份文件 软连接相当于快捷方式 硬连接相当于引用计数 软硬链接的目标也可以是软硬链接 软连接 指令 : ln -s 源文件 链接文件 软连接可链接文件夹 链接文件被删除后文件…

复杂网络基本概念(二)

一、集聚系数 节点i的集聚系数定义&#xff1a; 节点i的k个邻居节点之间实际存在的边数E和总的可能边数之比 所有节点的集聚系数的平均值 二、网络稀疏性与连通性 完全连接网络&#xff1a; 如果一个网络中任意两个节点之间都有来连边存在&#xff0c;则称其是一个完全连接…