精华内容
下载资源
问答
  • Matlab实现遗传算法(二进制编码)

    热门讨论 2011-05-26 15:05:44
    使用Matlab实现二进制编码方案的遗传算法,算法分为初始化init.m、编码encoding、解码decoding、交叉crossover、变异mutation、选择selection以及适应度函数的计算。该文件为编码算法
  • 本方法同样适合读取十六进制和二进制以外的其他进制文件,txt使用一个最简单的命令就可以读取 textread 这是一个十分有用,简便的函数(对于fopen fscanf而言)读取二进制txt文件:假如txt文档中内容为0001 0010 0011 ...

    本方法同样适合读取十六进制和二进制以外的其他进制文件,

    txt使用一个最简单的命令就可以读取 textread 这是一个十分有用,简便的函数(对于fopen fscanf而言)

    读取二进制txt文件:

    假如txt文档中内容为0001 0010 0011 0100 1000,保存在pin.txt文档中

    使用a=textread('pin.txt','%s')'

    a =

    '0001'    '0010'    '0011'    '0100'    '1000'

    可以看到数据保存为了char格式。

    使用bin2dec

    b=bin2dec(a)'

    b =

    1     2     3     4     8

    可以看到成功地转换成了十进制文件。

    十六进制文件:

    0001 0010 0011 0100 1000 A B C AA

    a=textread('pin.txt','%s')'

    a =

    '0001'    '0010'    '0011'    '0100'    '1000'    'A'    'B'    'C'    'AA'

    可以看到成功读取了文件。

    b=hex2dec(a)'

    b =

    1          16          17         256        4096          10          11          12         170

    读取完毕。

    Java读取CSV数据并写入txt文件

    读取CSV数据并写入txt文件 package com.vfsd; import java.io.BufferedWriter; import java.io.File; import java.io ...

    C#读取固定文本格式的txt文件

    C#读取固定文本格式的txt文件 一个简单的C#读取txt文档的程序,文档中用固定的格式存放着实例数据. //判断关键字在文档中是否存在 ] == "设备ID:107157061" ...

    前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输

    HTML5中的Blob对象只是二进制数据的容器,本身并不能操作二进制,故本篇将对其操作对象FileReader进行介绍. FileReader FileReader主要用于将文件内容读入内存,通过一系 ...

    将Matlab中的矩阵输出到txt文件

    将矩阵输出到txt文件中的方法,遍寻网络,始见真经!!! fid=fopen('C:Documents and Settingscleantotal.ped','wt');%写入文件路径 matrix ...

    ajax读取文本内容(此处的txt文件和html文件处于同级目录)

    展开全文
  • [Matlab]离散二进制粒子群算法(BPSO )解决背包问题什么是离散二进制粒子群算法(BPSO )描述离散二进制粒子群算法(BPSO )步骤背包问题描述解决思路函数设计targetPackage.mpsoForBackpack.m图像 什么是离散...

    什么是离散二进制粒子群算法(BPSO )

    文章参考: 【PSO】离散粒子群算法(DPSO)和离散二进制粒子群算法(BPSO )

    描述

    离散二进制粒子群算法(Discrete Binary Particle Swarm Optimization Algorithm, BPSO)最初由J.Kennedy和R.C.Eberhart在1997年设计;
    PSO主要优化连续实值问题,BPSO主要优化离散空间约束问题;
    BPSO是在离散粒子群算法基础上,约定位置向量、速度向量均由0、1值构成;
    BPSO有很强全局搜索能力,但不能收敛于全局最优值,且随着算法迭代搜索随机性越来越强,缺乏后期的局部搜索能力;

    离散二进制粒子群算法(BPSO )步骤

    初始化粒子位置:按一定策略,生成二进制编码;
    速度更新公式:速度 x 惯性权重 + (个体最优位置 - 当前位置)x 学习因子1 x 随机数 + (全局最优位置 - 当前位置)x 学习因子2 x 随机数。

    位置更新公式:概率映射方式,采用sigmoid函数将速度映射到 [0, 1] 区间作为概率,这个概率就是粒子下一步取值为1的概率;

    位置变化的绝对概率:当前位置为0变化为1,当前为1变化为0,这二者被称为绝对变化;概率表示为:

    背包问题

    描述

    有N件物品和一个容量为W的背包。第i件物品的体积是volume[i],价值是value[i]。求解将哪些物品装入背包可使价值总和最大同时又不能超过背包的总容积。

    其中:

    • N = 10;
    • W= 300;
    • volume=[95 75 23 73 50 22 6 57 89 98];
    • value=[89 59 19 43 100 72 44 16 7 64];

    解决思路

    对于这个实际问题时,首先要解决的问题是编码:对每个物品,我们只有拿取或者不拿两种选择,不能选择装入某物品的一部分,也不能装入同一物品多次,也就是说这是一个离散优化问题,种群中的个体采用二进制编码,用0表示不选择该件物品,1表示选择该件物品。

    函数设计

    targetPackage.m

    function fitness = targetPackage(x,indNum)
        
        volume=[95 75 23 73 50 22 6 57 89 98];        %物品体积
        value=[89 59 19 43 100 72 44 16 7 64];          %物品价值
        Weight=300;  %背包重量
        a = zeros(indNum,1);
        for i=1:indNum
            a(i,1) = volume*x(:,i);
        end
        %超过总重量的个体的适应度值都视为0
        k = find(volume*x<Weight);
        fitness=zeros(indNum,1);
        for j=1:size(k,2)
            fitness(k(j),1) = value*x(:,k(j));
        end   
    end
    

    其中 indNum 表示输入的个体数量

    psoForBackpack.m

    clc
    clear
    
    % 初始化种群
    % IndN = 50; 
    narvs = 10;
    n = 100; 
    x_ub = 3;
    x_lb = -3;
    
    vmax = 1.2; %粒子的最大速度
    w = 0.9;  % 惯性权重
    c1 = 2;  % 每个粒子的个体学习因子,也称为个体加速常数
    c2 = 2;  % 每个粒子的社会学习因子,也称为社会加速常数
    
    %初始种群
    x = randsrc(n,narvs,[0,1;0.5,0.5]);
    
    v = -vmax + 2*vmax .* rand(n,narvs);
    
    %计算种群适应度
    fitness = targetPackage(x',n);
    pbest = x;   % 初始化这n个粒子迄今为止找到的最佳位置(是一个n*narvs的向量)
    ind = find(fitness == max(fitness), 1);  % 找到适应度最大的那个粒子的下标
    gbest = x(ind,:);  % 定义所有粒子迄今为止找到的最佳位置(是一个1*narvs的向量)
    
    K=100;  %迭代次数
    fitnessbest=zeros(K,1); %保存每一代的函数值
    best=0;
    bestOne = zeros(1,10);
    
    for t = 1:K    
        for i = 1:n
            v(i,:) = w*v(i,:) + c1*rand(1)*(pbest(i,:) - x(i,:)) + c2*rand(1)*(gbest - x(i,:));
            % 判断速度是否超过限制了(还可以取模)
            for j = 1:narvs
                if v(i,j) < -vmax
                    v(i,j) = -vmax;
                elseif v(i,j) > vmax
                    v(i,j) = vmax;
                end
            end
            %sigmoid函数将例子的速度映射到0-1之间
            vs(i,:)=1./(1+exp(-v(i,:))); 
            for j = 1:narvs
                if rand < vs(i,j)
                    x(i,j) = 1;
                else
                    x(i,j) = 0;
                end
            end
            
            fit = targetPackage(x(i,:)',1);  % 重新计算第i个粒子的适应度
            if fit > targetPackage(pbest(i,:)',1)   % 如果第i个粒子的适应度大于这个粒子迄今为止找到的最佳位置对应的适应度
                pbest(i,:) = x(i,:);   % 那就更新第i个粒子迄今为止找到的最佳位置
            end
            if  fit > targetPackage(gbest',1)  % 如果第i个粒子的适应度大于所有的粒子迄今为止找到的最佳位置对应的适应度
                gbest = pbest(i,:);   % 那就更新所有粒子迄今为止找到的最佳位置
            end
        end
        h = targetPackage(gbest',1);    
        if h>best         
            best = h;  
            bestOne = gbest; 
        end
        fitnessbest(t,1)=best;
    end
    bestOne
    plot(1:K,fitnessbest,'-');
    grid on;
    grid minor;
    

    图像

    在这里插入图片描述

    展开全文
  • 本例是为了将1-255共255个十进制数转换为2进制,并将这些2进制str转换成矩阵向量的...%初始化存储矩阵for i=1:255 obj=dec2bin(i,8); %指定位宽为8进行10-2进制转换 for q=1:8 c(i,q)=str2num(obj(q)); endend...

    本例是为了将1-255共255个十进制数转换为2进制,并将这些2进制str转换成矩阵向量的形式,存放在一个255*8的矩阵中。


    c=zeros(255,8);%初始化存储矩阵

    for i=1:255
        obj=dec2bin(i,8);  %指定位宽为8进行10-2进制转换
        for q=1:8
            c(i,q)=str2num(obj(q));
        end
    end
    展开全文
  • 二进制多项式除法研究1、伽罗华域二进制除法matlab演示过程:>> a = gf([1 0 11],1)a= GF(2) array.Arrayelements =1011>> b = gf([1 10],1)b = GF(2)array.Arrayelements =110>> c = deconv(a,b)...

    二进制多项式除法研究

    1、伽罗华域二进制除法

    matlab演示过程:

    >> a = gf([1 0 1

    1],1)

    a

    = GF(2) array.

    Array

    elements =

    1

    0

    1

    1

    >> b = gf([1 1

    0],1)

    b = GF(2)

    array.

    Array

    elements =

    1

    1

    0

    >> c = deconv(a,b)

    c = GF(2)

    array.

    Array

    elements =

    1

    1

    >> [c,d] =

    deconv(a,b)

    c = GF(2)

    array.

    Array

    elements =

    1

    1

    d = GF(2)

    array.

    Array

    elements =

    0

    0

    0

    1

    >>

    CRC-32计算举例:

    >> a = gf([0 0 0 0 0 0 0 1 0

    0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0

    0 0 1 1 0],1);

    >> b = gf([1 0 0 0 0 0 1 0 0

    1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1],1)

    >> [c,d] =

    deconv(a,b)

    c = GF(2)

    array.

    Array

    elements =

    0

    0

    0

    0

    0

    0

    0

    1

    0

    0

    0

    0

    0

    1

    1

    0

    d = GF(2)

    array.

    Array

    elements =

    Columns 1 through 18

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    1

    1

    Columns 19 through 36

    0

    1

    1

    0

    0

    0

    1

    0

    0

    1

    1

    1

    1

    1

    1

    1

    1

    1

    Columns 37 through 48

    1

    1

    1

    1

    1

    0

    1

    1

    0

    1

    0

    0

    >>

    2、LFS二进制除法

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    3、用MATLAB实现上面两种方法

    %二进制多项式除法研究

    clear

    clc

    %输入区域

    LFS_L =

    4;%LFS长度

    g = [1 0 1

    1];%线性反馈一位寄存器系数,g=[1 0 1 1]对应g(x)=x^4 + (x^3 + x + 1),最高位默认为1

    A1 = [1 0

    1 1 1];%输入序列,A1 = [1 0 1 1 1]对应x^4 + x^2 + x + 1

    %下面的代码实现除法:(A1*x^LFS_L)/g

    %举例:

    � = [1 0 1

    1 1]对应x^4 + x^2 + x + 1

    %g=[1 0 1

    1]对应g(x)=x^4 + (x^3 + x + 1),最高位默认为1

    %LFS_L =

    4

    %则:(A1*x^LFS_L)/g = [(x^4 + x^2 + x + 1)*x^4]/[x^4 +

    (x^3 + x + 1)]

    %除法结果应该为:x^4 + x^3 + 1,二进制格式:[1 1 0 0 1]

    %余数结果应该为:x + 1,二进制格式:[0 0 1 1]

    %初始化

    D =

    zeros(1,LFS_L);%寄存器当前状态

    D_next =

    zeros(1,LFS_L);%寄存器下一个状态

    A2 =

    zeros(1,LFS_L);%填充序列,添加到输入序列末尾

    A =

    [A1,A2];%相当于A1*x^LFS_L

    LFS_out =

    zeros(1,length(A));%线性反馈移位寄存器的输出,相当于除法结果

    k =

    0;

    m =

    0;

    %1、伽罗华域方法

    A_gf =

    gf(A,1);

    g_gf =

    gf([1,g],1);

    disp('%%%用伽罗华域方法实现二进制多项式除法%%%')

    [div_rst_gf,div_remainder_gf] =

    deconv(A_gf,g_gf)

    %2、线性反馈移位寄存器方法

    g =

    g(end:-1:1);

    for k =

    1:length(A)

    D_next(1) = xor(A(k),D(LFS_L));

    for m = 2:LFS_L

    if(g(m)==1)

    D_next(m) = xor(D(m-1),D(LFS_L));

    else

    D_next(m) = D(m-1);

    end

    end

    LFS_out(k) = D_next(LFS_L);

    D = D_next;

    end

    disp('%%%用LFS实现二进制多项式除法%%%')

    disp('线性反馈移位寄存器结构:')

    disp('*************************************************************************')

    disp('

    _____________________________________________________________');

    disp('

    |g0

    |g1

    |g2

    |g3

    ...

    |gm');

    disp('

    v

    v

    v

    v

    ...

    |');

    disp('输入序列--> + -->[D0]-- +

    -->[D1]-- + -->[D2]-- +

    -->[D3]--...

    -->[Dm-1]--');

    disp('*************************************************************************')

    disp('线性反馈移位寄存器系数(高->低,不包含最高位gm,最高位默认为1):'),g

    disp('输入序列+填充序列(高->低,填充序列长度为LFS寄存器个数):'),A

    disp('A/g除法结果(高->低):'),div_rst =

    LFS_out(LFS_L:length(LFS_out)-1)%除法结果

    disp('A/g余数(高->低):'),div_remainder = D(end:-1:1)%余数

    4、MATLAB运行结果

    %%%用伽罗华域方法实现二进制多项式除法%%%

    div_rst_gf

    = GF(2) array.

    Array

    elements =

    1

    1

    0

    0

    1

    div_remainder_gf = GF(2) array.

    Array

    elements =

    0

    0

    0

    0

    0

    0

    0

    1

    1

    %%%用LFS实现二进制多项式除法%%%

    线性反馈移位寄存器结构:

    *************************************************************************

    _____________________________________________________________

    |g0

    |g1

    |g2

    |g3

    ...

    |gm

    v

    v

    v

    v

    ...

    |

    输入序列--> +

    -->[D0]-- + -->[D1]-- +

    -->[D2]-- + -->[D3]--...

    -->[Dm-1]--

    *************************************************************************

    线性反馈移位寄存器系数(高->低,不包含最高位gm,最高位默认为1):

    g

    =

    1

    1

    0

    1

    输入序列+填充序列(高->低,填充序列长度为LFS寄存器个数):

    A

    =

    1

    0

    1

    1

    1

    0

    0

    0

    0

    A/g除法结果(高->低):

    div_rst

    =

    1

    1

    0

    0

    1

    A/g余数(高->低):

    div_remainder =

    0

    0

    1

    1

    展开全文
  • 综合示例——8种阈值操作【OTSU阈值、自适应阈值二进制阈值、反二进制阈值、截断阈值、阈值化为0、反阈值化为0,双阈值
  • 有关二叉树的基本知识,请参阅我的博客之一: 二叉树的链式存储说明:二进制排序树是具有以下属性的空树或二进制树:1. 如果左子树不为空,则左子树上所有节点的值均小于其根节点的值;2. 如果右子树不为空,则右子树上...
  • 1.1 粒子群算法建模粒子群算法首先在给定的解空间中随机初始化粒子群,待优化问题的变量数决定了解空间的维数。每个粒子有了初始位置与初始速度,然后迭代寻优。每一次迭代中,每个粒子通过跟踪两个...
  • 二进制蝙蝠算法用于解决背包问题算法流程背包问题Matlab 代码目标函数仿真结果参考文献 算法流程 背包问题 参考[Matlab] 离散二进制粒子群算法(BPSO )解决背包问题 Matlab 代码 %% 二进制蝙蝠算法 %初始化种群...
  • 输入: -cIM:2D / 3D灰度矩阵- initPos:初始种子位置的坐标- thresVal:要包含的绝对阈值级别- maxDist:到初始位置的最大距离 [px] -tfMean:将初始值更新为区域平均值(慢) - tfFillHoles:填充二进制掩码中的...
  • 遗传算法MATLAB初始化

    千次阅读 2019-05-27 22:11:58
    MATLAB 遗传算法编程基本思想逻辑(多维数据优化问题) 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。...
  • 当您尝试根据单个特征将数据分为 2 个类别时,首先要做的是检查... 使用以下命令初始化变量: >> N = 1e3; >> k = 20; >> ST = [5+randn(1,N) 2*rand(1,k) 8+2*rand(1,k)]; >> holter = [2+6*rand(1,N)<ST>> plot_1fe
  • 简单遗传算法(二进制编码)

    万次阅读 2015-06-27 11:56:41
    #include #include #include #include #define M 80 //种群数量 #define LEN 20 //编码长度 #define xmin -1 //下限 ...#define MMAX (int)pow(2,LEN)//编码长度对应的最大二进制数 #define PI 3.1415926 #
  • RFID-二进制树搜索

    千次阅读 热门讨论 2019-06-16 22:28:22
    MATLAB编程实现二进制树搜索与二分支搜索。
  • 参考:[Matlab] 离散二进制粒子群算法(BPSO )解决背包问题 Matlab 代码 %% BQPSO 解决背包问题 %% 想法:解决十进制问题时需要将十进制的参数转化为二进制二进制则可理解为粒子群中的粒子仅有一维 clc clear %%...
  • 0.2 cli文件格式0.3 cli文件结构0.4 几何数据部分详解一.matlab 程序实现 零.cli文件简介 0.0 cli文件说明文档 cli文件说明文档,网址:https://www.hmilch.net/downloads/cli_format.html 0.1 下面是我们这使用的3D...
  • 信道函数、伯努利二进制产生器、泊松分布整数产生器
  • 香农编码及MATLAB实现* * 实验 香农编码的MATLAB实现 一、实验目的 熟悉MATLAB平台及工作环境 熟练使用条件判断语句、循环语句 掌握香农编码的步骤 掌握利用MATLAB实现香农编码 、实验原理 1. 香农编码步骤 (1)...
  • Java将十进制转换为8位二进制(Java convert from decimal to 8-bit binary)我写了简单的java代码来从十进制转换为8位二进制:抱歉这个愚蠢的问题1 int dec=1;2 String result="";3 String reverse = "";4 while(dec!...
  • 使用Matlab实现二进制编码方案的遗传算法,算法分为初始化init.m、编码encoding、解码decoding、交叉crossover、变异mutation、选择selection以及适应度函数的计算。该文件为初始化算法
  • 遗传算法matlab初始化代码洗衣机优化使用遗传算法 介绍 该项目检查了 2D 水平轴洗衣机在瞬态和稳态下的振动特性。 开发了一个 simulink 模型来分析产生的力和引起的振动。 为了减少振动并改进设计方案,使用了一种...
  • 定义要初始化的公共属性在此示例中,您会定义公共的 Filename 属性,并将该属性的值指定为不可调的字符向量 default.bin。调用 setup 方法之后,用户便无法更改不可调属性。properties (Nontunable)Filename = ...
  • 【本书目录】第1章MATLAB与通信仿真 11.1MATLAB简介 11.1.1MATLAB集成开发环境 21.1.2MATLAB编程语言 61.2通信仿真 81.2.1通信仿真的概念 81.2.2通信仿真的一般步骤 9第2章Simulink入门 122.1Simulink简介 122.2...
  • %二进制位串长度,即染色体上基因数目,和计算要求的精度有关,如 %精度 10 ^- 5 ,则 2 ^ 19 < 10 * 10 ^ 5 < 2 ^ 20 ,至少需要 20 位 Pc = 0 . 8 ; %交叉率,一般取 0 . 25 ~ 1 Pm = 0 . 1 ; %变异率,一般...
  • 讲述 离散二进制原理 ,以背包问题具体讲解离散二进制粒子群。代码语言:python、MATLAB
  • 对于特征选择这类离散型问题,我们使用二进制版本的BPSO进行优化。在PSO的迭代过程中,每个粒子都会向种群历史最优解(Gbest)和粒子本身历史最优解(Pbest)进行学习,同时也会不断地更新Gbest与Pbest,最后会收敛在...
  • 二进制搜索

    2015-06-10 15:17:00
    分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比較,假设大于这个元素,就在当前序列的后半部分...
  • 使用matlab生成rom初始化文件.coe

    千次阅读 2017-10-12 14:16:47
    在进行FPGA设计时,经常要对rom模块进行初始化。ISE或Quartus II软件本身具备的初始化功能对于较小的rom是行之有效的,但面对大容量的rom时就显得捉襟见肘了。而matlab作为一神器,在这时就有了用武之地。使用它生成...
  • 本文详细讨论了基于FPGA的mif文件创建与使用,对于mif文件创建与使用均给出了两种可行性的方法。mif文件具有固定格式,而对mif文件使用主要就是...本文以四位二进制加法查找表的实现为例,给出了m(Matlab)语言源程序。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,076
精华内容 1,630
关键字:

matlab二进制初始化

matlab 订阅