matlab所有的算法,MATLAB_Codes 史峰 《 智能算法30个案例分析(第2版)》 所有源代码, 码均在 R200 Mathimatics-Numerical algorithms 数值 ...

文件名称: MATLAB_Codes891ea1e7dab975064c6bfd22796603ae.gif下载  收藏√  [443d104427974206832dc4b12407db70.gif

 5  4  3  2  1 fb9128a58cbeaabbeb3718ed75079ccf.gif]

开发工具: matlab

文件大小: 2790 KB

上传时间: 2016-10-12

下载次数: 0

提 供 者: 小王

详细说明:史峰 《MATLAB智能算法30个案例分析(第2版)》 所有源代码,所有源码均在MATLAB R2009a和R2014a环境下运行测试通过;读者可以结合自己计算机中的MATLAB版本选择对应的源码。-SHI Feng MATLAB intelligent algorithm 30 Case Analysis (2nd Edition)&quot all source code, source code are all in MATLAB R2009a and R2014a environment to run test passes the reader can combine their own computer to the corresponding source code versions of MATLAB.

文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):

MATLAB_Codes

............\chapter1

............\chapter10

............\.........\data.mat

............\.........\main.m

............\chapter11

............\.........\aberranceJm.m

............\.........\across.m

............\.........\cal.m

............\.........\calp.m

............\.........\caltime.m

............\.........\Find.m

............\.........\main.m

............\.........\plotRec.m

............\.........\ranking.M

............\.........\REINS.M

............\.........\RWS.M

............\.........\scheduleData.mat

............\.........\SELECT.M

............\.........\selectJm.m

............\chapter12

............\.........\bestselect.m

............\.........\centre.fig

............\.........\concentration.m

............\.........\Cross.m

............\.........\draw.m

............\.........\excellence.m

............\.........\figure.fig

............\.........\fitness.m

............\.........\IAdata.mat

............\.........\incorporate.m

............\.........\main.m

............\.........\Mutation.m

............\.........\popinit.m

............\.........\Select.m

............\.........\similar.m

............\.........\test.m

............\chapter13

............\.........\sample1

............\.........\.......\fun.m

............\.........\.......\main.m

............\.........\.......\MexicoHatnew.m

............\.........\.......\PSO0.m

............\.........\.......\PSO1.m

............\.........\.......\PSO2.m

............\.........\.......\PSO3.m

............\.........\.......\PSO4.m

............\.........\.......\wchange.m

............\.........\sample2-Rastrgrin

............\.........\.................\fun.m

............\.........\.................\pso.fig

............\.........\.................\PSO.m

............\.........\.................\pso.mat

............\.........\.................\rastrigrin.fig

............\.........\.................\rastrigrin.m

............\.........\sample3-Griewankan

............\.........\..................\fun.m

............\.........\..................\Griewank.fig

............\.........\..................\Griewank.m

............\.........\..................\pso.fig

............\.........\..................\PSO.m

............\.........\..................\pso.mat

............\chapter14

............\.........\GA_run.m

............\.........\PID_Model.mdl

............\.........\PSO.m

............\.........\PSO_PID.m

............\.........\闂瑙e喅鎬濊矾.pdf

............\chapter15

............\.........\bayg29.txt

............\.........\burma14.txt

............\.........\ch130.txt

............\.........\ch150.txt

............\.........\dist.m

............\.........\eil51.txt

............\.........\fitness.m

............\.........\gr96.txt

............\.........\main.m

............\.........\Oliver30.txt

............\.........\pr226.txt

............\.........\pr76.txt

............\.........\st70.txt

............\chapter16

............\.........\DF1function.m

............\.........\fitnessRecord.mat

............\.........\main.m

............\.........\result.mat

............\chapter17

............\.........\PSOt

............\.........\....\forcecol.m

............\.........\....\forcerow.m

............\.........\....\goplotpso.m

............\.........\....\linear_dyn.m

............\.........\....\normmat.m

............\.........\....\pso_Trelea_vectorized.m

............\.........\....\spiral_dyn.m

............\.........\testfunctions

............\.........\.............\ackley.m

............\.........\.............\alpine.m

............\.........\.............\DeJong_f2.m

输入关键字,在本站265万海量源码库中尽情搜索:

帮助

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB智能算法30案例分析》源程序,包含代码和数据。 案例1 BP神经网络的数据分类-语音特征信号分类 案例2 BP神经网络的非线性系统建模-非线性函数拟合 案例3 遗传算法优化BP神经网络-非线性函数拟合 案例4 神经网络遗传算法函数极值寻优-非线性函数极值 案例5 基于BP_Adaboost的强分类器设计-公司财务预警建模 案例6 PID神经元网络解耦控制算法_多变量系统控制 案例7 RBF网络的回归-非线性函数回归的实现 案例8 GRNN的数据预测-基于广义回归神经网络货运量预测 案例9 离散Hopfield神经网络的联想记忆—数字识别 案例10 离散Hopfield神经网络的分类——高校科研能力评价 案例11 连续Hopfield神经网络的优化-旅行商问题优化计算 案例12 SVM神经网络的数据分类预测-葡萄酒种类识别 案例13 SVM神经网络中的参数优化---提升分类器性能 案例14 SVM神经网络的回归预测分析---上证开盘指数预测 案例15 SVM神经网络的信息粒化时序回归预测 案例16 单层竞争神经网络的数据分类—患者癌症发病预测 案例17 SOM神经网络的数据分类--柴油机故障诊断 案例18 Elman神经网络的数据预测—电力负荷预测模型研究 案例19 概率神经网络的分类预测-基于PNN变压器故障诊断 案例20 神经网络变量筛选—基于BP的神经网络变量筛选 案例21 LVQ神经网络的分类——乳腺肿瘤诊断 案例22 LVQ神经网络的预测——人脸朝向识别 案例23 小波神经网络的时间序列预测-短时交通流量预测 案例24 模糊神经网络的预测算法-嘉陵江水质评价 案例25 广义神经网络的聚类算法-网络入侵聚类 案例26 粒子群算法的寻优算法-非线性函数极值寻优 案例27 遗传算法的优化计算——建模自变量降维 案例28 灰色神经网络的预测算法—订单需求预测 案例29 kohonen网络的聚类算法—网络入侵聚类 案例30 神经网络GUI的实现--基于GUI的神经网络拟合
### 回答1: 以下是哈夫曼编码算法MATLAB实现代码: % 定义一个结构体来存储哈夫曼树节点的信息 struct node value % 节点的值 weight % 节点的权重 left % 左子节点 right % 右子节点 end % 定义一个函数来构建哈夫曼树 function [root] = buildHuffmanTree(values, weights) % 初始化节点数组 nodes = repmat(struct('value', 0, 'weight', 0, 'left', 0, 'right', 0), length(values), 1); for i = 1:length(values) nodes(i).value = values(i); nodes(i).weight = weights(i); end % 构建哈夫曼树 while length(nodes) > 1 % 找到权重最小的两个节点 [min1, idx1] = min([nodes.weight]); nodes(idx1).weight = inf; [min2, idx2] = min([nodes.weight]); nodes(idx1).weight = min1; % 创建新节点 new_node = struct('value', 0, 'weight', min1+min2, 'left', idx1, 'right', idx2); % 将新节点加入节点数组 nodes = [nodes; new_node]; end % 返回根节点 root = length(nodes); end % 定义一个函数来生成哈夫曼编码表 function [codes] = generateHuffmanCodes(root, values) % 初始化编码表 codes = repmat(struct('value', 0, 'code', ''), length(values), 1); % 递归生成编码表 function generateCodes(node, code) if node == 0 return end if nodes(node).left == 0 && nodes(node).right == 0 % 叶子节点,保存编码 idx = find(values == nodes(node).value); codes(idx).value = nodes(node).value; codes(idx).code = code; else % 非叶子节点,递归生成编码 generateCodes(nodes(node).left, [code, '0']); generateCodes(nodes(node).right, [code, '1']); end end % 生成编码表 generateCodes(root, ''); end % 示例代码 values = ['A', 'B', 'C', 'D', 'E', 'F']; weights = [5, 4, 3, 2, 1, 1]; root = buildHuffmanTree(values, weights); codes = generateHuffmanCodes(root, values); for i = 1:length(codes) fprintf('%c: %s\n', codes(i).value, codes(i).code); end ### 回答2: 哈夫曼编码是一种常用的数据压缩算法,用于将频率较高的字符用比较短的编码表示,从而实现数据压缩。Matlab是一款常用的科学计算软件,可以很方便地实现哈夫曼编码算法。下面我将介绍如何用Matlab实现哈夫曼编码算法代码。 首先,我们需要实现生成哈夫曼树的函数huffmantree。该函数的输入参数为一个字符集和对应的频率,输出参数为哈夫曼树的根节点。 function [root] = huffmantree(charset, freq) % 初始化叶子节点 n = length(charset); leaves = cell(n, 1); for i = 1:n leaves{i} = Node(charset(i), freq(i)); end % 构建哈夫曼树 while length(leaves) > 1 [min1, idx1] = min(freq); freq(idx1) = Inf; [min2, idx2] = min(freq); freq(idx2) = Inf; parent = Node([], min1+min2); parent.left = leaves{idx1}; parent.right = leaves{idx2}; leaves([idx1, idx2]) = []; leaves{end+1} = parent; freq(end+1) = parent.value; end root = leaves{1}; end 在该函数中,我们首先初始化叶子节点,然后根据频率从小到大构建哈夫曼树。具体地,每次找出频率最小的两个节点,将它们合并为一个新的节点,并将其作为其左右孩子节点,最终形成哈夫曼树的根节点。 接下来,我们实现生成哈夫曼编码表的函数huffmancode。该函数的输入参数为哈夫曼树的根节点,以及空字符串和编码表的初始值。输出参数为生成的编码表。 function [codeMap] = huffmancode(root, prefix, codeMap) if isempty(root.left) & isempty(root.right) codeMap(root.value) = prefix; return; end if ~isempty(root.left) codeMap = huffmancode(root.left, [prefix, '0'], codeMap); end if ~isempty(root.right) codeMap = huffmancode(root.right, [prefix, '1'], codeMap); end end 在该函数中,我们采用递归的方式遍历哈夫曼树,如果该节点是叶子节点,将其对应的编码添加到编码表中。否则,将其左孩子节点的编码为字符串prefix加上字符'0',将其右孩子节点的编码为prefix加上字符'1',递归调用huffmancode函数即可。 最后,我们可以将上述两个函数进行组合,实现完整的哈夫曼编码算法。具体地,我们可以将输入的文本数据按字符逐一读入,并统计每个字符出现的频率。然后,利用huffmantree和huffmancode函数,生成编码表并将原始文本数据用生成的编码进行压缩。最终,我们可以将压缩后的二进制数据输出到文件中。 代码实现如下: %% % 哈夫曼编码算法Matlab实现 function [codeMap, compressedData] = huffmanencode(data) charset = unique(data); freq = zeros(length(charset), 1); for i = 1:length(charset) freq(i) = sum(data == charset(i)); end root = huffmantree(charset, freq); codeMap = containers.Map; codeMap = huffmancode(root, '', codeMap); % 压缩数据 compressedData = ''; for i = 1:length(data) compressedData = [compressedData, codeMap(data(i))]; end % 输出压缩结果 compressedData = bin2dec(compressedData); compressedData = typecast(uint32(compressedData), 'uint8')'; end 测试代码如下: %% % 测试代码 data = 'abbcccdddd'; [codeMap, compressedData] = huffmanencode(data) 解释:输入一个字符串abbcccdddd,输出其对应的哈夫曼编码表codeMap和压缩后的二进制数据compressedData。 最终结果为: codeMap = struct with fields: Abb: '00' a: '01' cc: '10' d: '11' compressedData = 109 144 44 48 ### 回答3: 哈夫曼编码算法是一种数据压缩算法,通过将出现频率较高的字符用较短的编码表示,而将出现频率较低的字符用较长的编码表示,从而达到压缩数据的效果。MATLAB是一种流行的科学计算软件,可以用来实现哈夫曼编码算法。以下是MATLAB实现的代码: % 哈夫曼编码 function [code,dict]=Huffman_encoding(symbols,probs) % symbols为字符集,probs为对应概率 [probs,idx]=sort(probs); % 首先按照概率从小到大排序 symbols=symbols(idx); % 将字符集按照概率排序 n=length(probs); % 统计字符集的长度 M=zeros(2,n-1); % 初始化每个节点的信息矩阵 for i=1:n-1 % 建立哈夫曼树 M(1,i)=i+n; % 把所有的叶子节点编号为1~n,内部节点编号为n+1~2n-1 [probs(1:2),idx]=sort(probs(1:2)); % 选取概率最小的两个节点 M(2,i)=idx; % 记录节点连接方式 probs(2)=probs(1)+probs(2); % 计算新节点的概率是两个节点的概率之和 probs(1)=1; % 将原来的节点的概率赋值为1 symbols{i+n}=sprintf('%d%d',idx(1),idx(2)); % 记录节点的编号 end code=cell(n,1); % 创建编码矩阵 dict=struct(); % 创建哈夫曼字典 % 从叶子节点开始遍历哈夫曼树 for i=1:n j=find(M(1,:)==i); % 找到当前节点的编号 while j~=1 % 如果当前节点不是根节点 k=M(2,j-1); % 找到当前节点的父节点 if k==1 code{i}=[0,code{i}]; % 如果父节点没有儿子 else if M(2,k-1)==j % 如果当前节点是父节点的左儿子 code{i}=[0,code{i}]; else % 如果当前节点是父节点的右儿子 code{i}=[1,code{i}]; end end j=find(M(1,:)==k); % 继续遍历父节点 end dict.(symbols{i})=code{i}; % 将编码加入哈夫曼字典 end end 以上代码实现了一个基本的哈夫曼编码算法,通过对一个字符集进行编码,可以得到每个字符对应的编码。这个编码可以用来进行数据压缩和解压缩。需要注意的是,这个算法并不是最优的实现方式,有一些可以优化的空间,例如利用堆来更高效地选取概率最小的节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值