精华内容
下载资源
问答
  • 在看完UFLDL自编码器autoencoder的代码后,发现其中的训练过程并不是使用训练的手段找到最优的参数theta,而是使用了minFunc寻找代价函数的最小值,并返回优化后的参数theta。其中的minFunc函数的说明里头提到了这个...

    在看完UFLDL自编码器autoencoder的代码后,发现其中的训练过程并不是使用训练的手段找到最优的参数theta,而是使用了minFunc寻找代价函数的最小值,并返回优化后的参数theta。其中的minFunc函数的说明里头提到了这个函数提供的各种选项和matlab提供的fminunc函数非常像,所以就去看了下matlabhelp

    这里贴出fminunc函数help中最基本的翻译:

    fminunc试图找到一个多变量函数的最小值,从一个估计的初试值开始,这通常被认为是无约束非线性优化问题。

    x =fminunc(fun,x0)      试图从x0附近开始找到函数的局部最小值,x0可以是标量,向量或矩阵

    x =fminunc(fun,x0,options)      根据结构体options中的设置来找到最小值,可用optimset来设置options

    x =fminunc(problem)         为problem找到最小值,而problem是在Input Arguments中定义的结构体

     

    Create thestructure problem by exporting a problem from Optimization Tool, as describedin Exporting Your Work.

     

    [x,fval]= fminunc(...)    返回目标函数fun在解x处的函数值

    [x,fval,exitflag]= fminunc(...)     返回一个描述退出条件的值exitflag

    [x,fval,exitflag,output]= fminunc(...)       返回一个叫output的结构体,它包含着优化的信息

    [x,fval,exitflag,output,grad]= fminunc(...)     返回函数在解x处的梯度的值,存储在grad中

    [x,fval,exitflag,output,grad,hessian]= fminunc(...)            返回函数在解x处的Hessian矩阵的值,存储在hessian中

     

    对这些说明理解的不是很透彻,然后做了几个简单的实验,如下:

     

    定义函数fun1

    function y = fun1(x)

    y = (x - 2)^2;

    end

    显然fun1x=2处取得最小值0

     

    clear all;

    x0 = 1.5

     [x,fval,exitflag,output,grad,hessian] =fminunc(@fun1,x0)

     

    运行结果是:

    x =2.0000     fval =1.2490e-16

    exitflag =  1

    output =

           iterations: 1

            funcCount: 6

             stepsize: 0.5000

        firstorderopt: 7.4506e-09

            algorithm: 'medium-scale: Quasi-Newtonline search'

              message: [1x436 char]

    grad  = 7.4506e-09                hessian =  2

     

    再做一个多变量实验,定义函数fun2

    function y = fun2(x)

    y = (x(1)^2)+(x(2)^2);

    end

     

    显然,fun2x1=0,x2=0处取得最小值0

     

    clear all;

    x0 = [2;2];

    [x,fval,exitflag,output,grad,hessian]= fminunc(@fun2,x0)

     

    运行结果是:

    x =

         0

         0

    fval =0

    exitflag =1

    output =

           iterations: 2

            funcCount: 9

             stepsize: 1

        firstorderopt: 1.4901e-08

            algorithm: 'medium-scale: Quasi-Newtonline search'

              message: [1x436 char]

    grad =

       1.0e-07 *

        0.1490

        0.1490

    hessian =

       NaN  NaN

       NaN  NaN

    但是假如函数形如f(x,y),而且f(x,y)中还有可变的参数a,b的话如何求取其最小值呢?定义了第三个函数fun3

    function y = fun3(x,a,b)

    y = (x(1)-a)^2+(x(2)-b)^2;

    end

    这个函数含两个自变量x(1),x(2),还有参数a,b,显然函数在x(1)=a,x(2)=b时取得最小值0

    clear all;

    x0 = [2;2]

    a = 1

    b = 0

    x = fminunc(@(p)fun3(p,a,b),x0)%注意此处的写法

    结果是

    x =

        1.0000

    0.0000

    fminunc找到了当我定义a=1,b=0时的函数的最小值是在x=[1;0]处,以后要找到一个需要赋值,还要指定参数值的函数的最小值的时候就可以这样做了。但是不要把x(1)x(2)分开定义成x,y,这样只会给自己找麻烦。fminunchelp里头提到一个problem的结构体好像可以解决这个问题,没有深究,读者自己去看。

     

    %==================================================================

    现在我们用fminunc来找二元逻辑回归的代价函数的最小值

    数据在这http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex4/ex4.html

     

    logistic_test.m

    clear all; close all;

     

    x = load('G:\training_data\ex4x.dat');

    y = load('G:\training_data\ex4y.dat');

     

    theta = [-15.0; 0.14; 0.15];

    J = logisticCost(theta,x,y);

     

    theta0 = zeros(3,1);%随机设置一个初始值,其实就在上面那个theta附近

    data = x;

    label = y;

    options=optimset('MaxIter',100);

    [opttheta,fval] = fminunc(@(p)logisticCost(p,data,label),theta0)

    定义代价函数logisticCost.m

    function cost = logisticCost(theta, data, label)

     

    [trainNum trainLength] =size(data);

    z = [ones(trainNum,1)data]*theta;

     

    h = inline('1.0 ./ (1.0 + exp(-z))');

    htheta = h(z);

    cost =(-1/trainNum)*(label'*log(htheta) + (1-label)'*log(1-htheta));

    运行[opttheta,fval]= fminunc(@(p) logisticCost(p,data,label),theta0)

    的结果是

    opttheta =

      -16.3787

        0.1483

        0.1589

    fval =

    0.4054

    这个结果跟上面下载数据的网页处提供的结果一样

     

    其实注意到fminunc是因为稀疏自编码器autoencodertrain.m代码中步骤3

    numgrad =computeNumericalGradient( @(x) sparseAutoencoderCost(x, visibleSize,...

                                                     hiddenSize, lambda,...

                                                     sparsityParam, beta,...

                                                     patches), theta);

     

    此处的写法和x = fminunc(@(p) fun3(p,a,b),x0)类似,我其实是模仿train.m的代码做了个更简单的实验,将参数a,b加入到了fun3中去。在UFLDL的softmax回归的代码softmaxTrain.m中也有类似的求最优的theta的做法,所以从这些实现寻找最优theta的方法中我们发现,神经网络的训练过程可能不是通过一遍一遍的for来实现,而是通过非线性优化之类的寻找最优解的方法来实现的。更多的内容可以自行百度BFGS,L-BFGS之类minFunc中提到的东西来了解。

    展开全文
  • matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max 对应位置用find函数 举个例子: >> A=[1 2 3 ;4 5 6] A = 1 2 3 4 5 6 &gt...

    matlab寻找最大值或者最小值是通过max和min命令

    对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max
    找对应位置用find函数
    举个例子:
    >> A=[1 2 3 ;4 5 6]
    A =
    1 2 3
    4 5 6
    >> max(max(A))
    ans =
    6
    >> [x y]=find(A==max(max(A)))
    x =
    2
    y =
    3
    >> 
    找到最大元素是6,对应位置是x=2,y=3,就是第2行,第3列

     

    对于一维的数组就很简单

    [m,n]=max(A)

    m就是一维矩阵A的最大值,n就是最大值所在的位置

    PS:有定制开发需求,可以QQ联系:2472853871

    欢迎关注公众号:算法工程师的学习日志

    展开全文
  • Matlab常用函数举例(十)

    千次阅读 2012-05-02 18:13:52
    -由一有范围限制的变量函数的最小值 Fminsearch - 由几个变量函数的最小值 Fzero 求一元(非线性)函数的零点(单变量求根) 2.数值积分

    十、泛函和常微分方程求解(funfun)
       

    1.求函数极小值点和函数零点

    Fminbnd

    -由一有范围限制的变量找出函数的最小值

    Fminsearch

    - 由几个变量找出函数的最小值

    Fzero

    求一元(非线性)函数的零点(单变量求根)


    2.数值积分

    quad

    低阶方法(simpson公式)计算数值积分值

    quad8

    高阶方法计算数值积分值

    dblquad

    计算二元函数(重积分)数值积分值。



    3.函数绘图

    ezplot

    简单函数绘图命令

    fplot

    函数绘图命令


    4.内嵌函数对象Inline function object.

    inline

    构造内嵌函数命令

    argnames

    显示内嵌函数的自变量名

    formula

    显示内嵌函数的表达式

    char

    将内嵌函数转换为字符串数组


    5.常微分方程求解
    (不能确定是否是刚性常微分方程时,首先用命令 ODE45 ,然后用命令ODE15S.)

     

    ode45

    微分方程高阶数值解法,基于显式龙格.库达(4,5)法,采用单步算法来计算

    ode23

    微分方程低阶数值解法,这是一个比ode45低阶的方法,基于显式龙格库达(2,3)法

    ode113

    用于更高阶或大的标量计算。采用多步法。

    ode23t

    -用于解决难度适中的问题.

    ode15s


    与ode23相同,但要求的精度更高。采用数值差分方法。为多步法

    ode23s

    - 用于解决难度较大的微分方程组。对于系统中存在常量矩阵的情况也有用。采用2阶改进的rosenbrock方法。采用单步法

    ode23tb

    -用于解决难度较大的问题,对于系统中存在常量矩阵的情况也有用.

    odefile

    - ODE file syntax.


    6.常微分方程数据输出函数

    odeplot

    - 画出解的图形.

    odephas2

    - 画出2D的平面相位图.

    odephas3

    -画出3D的平面相位图.

    odeprint

    - 显示中间结果

     


    展开全文
  • Matlab函数备忘

    2017-10-18 15:28:56
    利用Matlab在矩阵里每一列的最小值时用min(a)函数 利用Matlab在矩阵里每一行的最小值时用min(a,[],2)函数

    1.利用Matlab在矩阵里找每一列的最小值时用min(a)函数

       利用Matlab在矩阵里找每一行的最小值时用min(a,[],2)函数

    2.矩阵里两个元素互换可以用 BinMinHeap([1 3])=BinMinHeap([3 1])这种表达方式,即将矩阵的第三个元素和第一个元     素互换成功

    3.比较两个数的较小值的时候:

       [minKey,minKeyIdx] = min([BinMinHeap(2*n).key, BinMinHeap(2*n+1).key]);

       minKey等于较小的值;

       如果BinMinHeap(2*n).key较小,则minKeyIdx=1

       如果BinMinHeap(2*n+1).key较小,则minKeyIdx=2

    4.imagesc(A) 将矩阵A中的元素数值按大小转化为不同颜色

       set(gca,'dataAspectRatio',[1 1 1])将各坐标轴比例设为1:1:1

    展开全文
  • %出每列最大最小值 maxold=max(old); minold=min(old); %张成与old一样大小,主要对行进行复制,列不用变 m=size(old,1); maxnew=repmat(maxold,m,1); minnew=repmat(minold,m,1); new=(old-minnew)./(max
  • Matlab 函数记录本

    2015-10-27 08:40:15
    1. fminunc :出自定义函数最小值点,可以返回距最小值自变量x和收敛情况。 2.randperm(100):创建一个随机排列长度为100数组。 3.方法可变参数定义: function [h, display_array] = displayData(X, ...
  • matlab-编程基础函数

    2021-03-30 10:44:21
    矩阵最大值和位置索引 文章目录matlabc 常用编程基础函数一、起泡法排序二、求矩阵最大值及最大值所在位置 一、起泡法排序 起泡法是最常用一种排序方法,其原理为比较相邻两个数,不断把最大值或最小值...
  • 我想统计一个数组(尤其是...对复杂输入,最小值是排序列表第一个值。 M = mode(A, 'all') 计算 A 所有元素众数 M = mode(A,dim) 以一个二维输入数组 A 为例。 如果 dim = 1,则 mode(A,1) 返回包含每一列中
  • 我原来以为如果a是行向量,min(a)返回a本身,因为我记得min(a,1)是按列最小,这是默认。doc min发现,只要a是向量,那么返回最小值。  2.C= min(a,[],dim),dim分别取1,2和我理解一样。  3.C= min(A,B)...
  • 开始讲解matlab试卷内容!先讲“硬菜”!2018年程序编程题!编写一个程序,该程序能够取出矩阵randi(100,2,30)中最大值和最小值。max_value = max(max(seq));min_value = min(min(seq));多少分?30分?简单吗...
  • 问题:出y=x4-4x3+3x+5 (xÎ[0,6])在[0,6]之间的最小值。 思路:用33位0,1变量来编码x,3位编码整数,30位编码小数。理论上30位编码小数可以将最小值对应的x精确到小数点后九位. 下面是我解决这个问题所有的...
  • 求2个设计变量目标函数的最优化问题可转换为在三维坐标系内出该目标函数曲面在约束函数范围内的最小值问题。借助于MATLAB强大的数据可视化功能,在三维坐标系内绘制出目标函数与约束函数的曲面图,并对二维优化问题...
  • ④multistart(全局最优)(多个局部最小值) 下面这个例子在globalsearch中使用过,在这里可以只是换一下符号,再次使用。可以看出两个函数设置基本相同。 实例(六驼峰最小值问题) rng default %对于再现性...
  • 规划问题的matlab求解

    千次阅读 2017-07-30 11:03:17
    规划问题求解原理 假如规划问题有有限个最优解,则一定有某个最优解是可行区域一个极点。... 线性规划目标函数可以是求最大值,也可以是求最小值,约束条件不等号可以 是小于号也可以是大于号。为了避
  • Matlab寻峰程序.doc

    2020-04-20 16:59:14
    matlab针对峰值有自带函数,可以试试findpeaks。这样把那些随机峰值滤除。max和min函数可以返回最大值,最小值的在矩阵中位置和值
  • 本文介绍fminunc的使用,结合bfgs的例子一起说一说、 关于BFGS的用法,自己资料看一下原理,基本上意思就是用一个近似的方法将原有的...去这个函数的最小值,不带任何约束。 写成func@ 的形式 fun = @(x)x(1)*exp...
  • 本文来自于csdn,本文将通过以OCR(光学字符识别)的场景来介绍深度学习在计算机视觉中的应用。...梯度下降:损失函数J的最小值,高数知识可知对函数求导等于零,对应的点即为极值点,但有些函数
  • 这篇文章大概挺水的吧,毕竟周期数列本来就不是什么很难的东西。偷偷bb一下,其实以后打算写一点比较容易看懂的、比较科普性...所有满足条件的 的最小值就称为“最小正周期”。数列是特殊的函数,自变量的取值只能为...
  • 数学建模matlab画图操作大全 ...x0=fminsearch(f,-11)%-11附近的最小值 %% 画图及其基本操作 %画图,默认格式的函数,红色圆圈的零点,品红色虚线的横线 plot(x,f(x),x0,f(x0),'or',[-40 40],[0 0],'m--') hol
  • 标准粒子群算法(PSO)matlab实现

    千次阅读 多人点赞 2018-12-29 22:12:05
    标准粒子群算法(PSO)matlab实现 标准PSO算法核心公式如下: 其中,w,c1,c2是预置好...此实验是在二维空间寻找最小值,设置多峰函数: z = x^2 + y-7cos(pix)-8cos(2pi*y); 它图像如下所示,我们要找的是...
  • 最速下降法上一种沿着N维目标函数的负梯度方向搜索最小值的方法。 (1)算法原理 函数的负梯度表示如下: 搜索步长可调整ak,通常记为 (第k次迭代的步长)。该算法利用一维的线性搜索方法,如二次逼近法,沿着负...
  • 3)来举个经典栗子,求Ackley函数的最小值。 什么很好求?可不是,这个函数的局部最小值太多了,一不小心就掉坑了,函数是这样的: ackley函数.png MATLAB画图如下: ...
  • 单纯性算法 模型 一般线性规划问题中当线性方程组变量数大于方程个数,这时会...通过优化迭代,直到目标函数实现最大或最小值。换而言之,单纯形法就是秉承“保证每一次迭代比前一次更优”基本思想:先出一...
  • 行列向量基本运算 将列向量转置(Transpose)後,就可以得到行向量(Column vector): >...不论是行向量或列向量,我们均可用同样的函数找出其元素个数、最大值、最小值等: >> len...
  • 首先从简单开始,没有约束非线性,然后就是非线性中比较特殊一个例子,...前提:是求解最小值啊,如果求解最大值,那就要反过来,不过一般都把目标函数倒过来就是了。 那么要一个非正定,来试试 ...
  • Matlab 中使用max,min函数的时候需要注意。 可以比较两个数,比如: a=1 b=2 max(a,b) 没问题; 可以矩阵的最大最小值,比如: A=[1 2 3; 4 5 6; 7 8 9] maxA=max(max(A)) 没问题; 但是就以下形式是不行的: A=[1 ...
  • MaLab中求矩阵最大值

    2019-04-13 11:22:37
    MatLab中,max和min函数分别能求一维的最大值和一维的最小值 如果想求二维矩阵x的最大值,可用max(max(x)); 这里不是特别明白,有时间的话高人问一下 a=rand(4,5) % 取随机数,也可以像你那样input手工输入。 [m...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

matlab找函数的最小值

matlab 订阅