matlab编程 订阅
《MATLAB编程》是2007年科学出版社出版的图书,作者是查普曼(StephenJ.Chapman)。 展开全文
《MATLAB编程》是2007年科学出版社出版的图书,作者是查普曼(StephenJ.Chapman)。
信息
ISBN
9787030111395
作    者
查普曼(StephenJ.Chapman)
定    价
41.00 元
书    名
MATLAB编程
出版时间
2007
开    本
16
出版社
科学出版社
MATLAB编程内容简介
本书为国外高校电子信息类优秀教材(英文影印版)之一。本书详细讲述了如何用MATLAB进行程序设计,如何编写清楚、高效的程序。书中强调了自上而下的程序设计方法、函数的使用、MATLAB内部工具的使用和数据结构,并指出了一些使用技巧和编程者常犯的错误。书可作为工科各专业本科生的教学辅导书,也可作为工程技术人员的参考书。
收起全文
精华内容
参与话题
问答
  • MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程MATLAB编程
  • matlab编程

    2018-10-23 10:30:47
    讲解MATLAB编程,了解如何去用MATLAB编程,有一个良好的编程习惯以及良好的程序风格
  • MATLAB编程

    2013-09-25 19:49:32
    帮助matlab学习,详细介绍matlab编程方法,适合初学者
  • matlab 编程

    2015-03-29 14:43:38
    M文件 m文件即脚本,为了一次执行多条保存过的命令。 %为注释。

    M文件-脚本

    m文件即脚本,为了一次执行多条保存过的命令。
    %为注释。

    m脚本运行后,运算过程中产生的变量和结果都将被保存在工作空间(workSpace)中,就像在命令窗口(command window)中依次输入m文件中的语句,效果一样。

    M文件-函数

    function [x1 x2]=equationSolve(a,b,c)
    %[x1 x2] is return value
    %a,b,c are input parameters
    %calculate quadratic equation with one unknown
    delt=b*b-4*a*c;
    if delt<0
        'no answer';
    elseif delt==0
        'only one answer';
        x1=-a/2;
    else
        x1=(-a+sqrt(delt))/2;
        x2=(-a-sqrt(delt))/2;
    end
    保存为equationSolve.m,加入到matlab的path中,就可以直接用了。


    与m脚本不同,m函数运行时的中间结果不影响用户的工作空间。


    展开全文
  • 本篇文章中,旨在解决如何用Matlab编程实现QR二维码的生成与识别。编程环境是Matlab2012a,所用的开源库是ZXing,ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D...

    本篇文章中,旨在解决如何用Matlab编程实现QR二维码的生成与识别。编程环境是Matlab2012a,所用的开源库是ZXing,ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。

    一、问题描述

    QR二维码应用广泛,  随处可见,如下图所示。很多人都想要用Matlab实现QR二维码的生成与识别的功能,但是苦于不会JAVA,不知道怎么在Matlab中调用JAVA库。本文将详细介绍如何编程实现。需要的主要库是ZXing开源库,需要在网上下载放在m文件的同一文件夹下,本次选择1.7版本的ZXing开源库,两个库名为:zxing-core-1.7和zxing-j2se-1.7以下将分为QR二维码生成和识别两部分进行详细讲解。



    二、编程实现

    2.1 QR二维码生成的编程实现

    需要生成QR二维码,首先了解一下需要用到的类。MultiFormatWriter是需要用到的类。我们需要知道这个类的成员函数,Matlab查看java类的成员用到的指令是:methodsview  类名。如查询MultiFormatWriter,指令如下:

         methodsview com.google.zxing.MultiFormatWriter

    然后运行指令出现对话框如下:


    上图介绍了该类所有的成员函数,可以看到输入变量,输出变量,这样就可以很方便的调用成员函数。上图红框中的函数就是生产二维码的,可以看到,输入变量:

        参数一:字符串类型,即需要编码的信息

        参数二:指定条码的码制,常见二维码码制有QR、PDF417、datamatrix等。

        参数三、四:指定生产的条码图像的大小。

    输出变量即为编码完后的条码图像,上图可以看到它的数据类型是BitMatrix,该类型是Java自带的类型,所以当在Matlab编程产生了条码图像后,还需要进行数据类型转化,使其成为Matlab的矩阵的数据类型。本文将其封装为一个函数,所以代码如下:

    encode_qr.m文件

    function qr = encode_qr(message, width,height)
    % 功能:把信息编码生成QR二维码图像,可以指定图像大小
    %变量说明:
    %   输入:
    %       message:字符串信息
    %       width :指定生成的图像的宽度
    %       height:指定生成的图像的高度
    %   输出:
    %       qr:得到QR二维码图像

    writer = com.google.zxing.MultiFormatWriter();%创建MultiFormatWriter类的对象
    M_java = writer.encode(message, com.google.zxing.BarcodeFormat.QR_CODE, ...
                                       width, height);%调用MultiFormatWriter类的成员函数
    %数据类型转化                               
    qr = char(M_java);
    clear bitmtx writer
    qr(qr==10) = []; 
    qr = reshape(qr(1:2:end), width, height)'; 
    qr(qr~='X') = 1;
    qr(qr=='X') = 0;

    qr = double(qr);

    end

    所以当想要生成QR二维码的图像时,调用encode_qr函数即可,前提是需要加载java库的路径,代码如下:

    clear
    clc
    %%%%%%%%%%QR图像生成%%%%%%%%
    javaaddpath('zxing-core-1.7.jar');%加载Java库的路径
    javaaddpath('zxing-j2se-1.7.jar');%加载Java库的路径
    message=input('请输入编码信息:\n','s');%输入信息
    QRimg= encode_qr(message, 512,512);
    imshow(QRimg);

    title('QR图片');

    运行程序,结果如下图所示。


    信息输入完毕,回车后结果如图所示:


    2.2 QR二维码识别的编程实现

    需要识别QR二维码,首先了解一下需要用到的类。有容器类BufferedImageLuminanceSource、BinaryBitmap。识别过程关键类是QRCodeReader。用前面提到的指令查阅类的详细情况。如下图:


    上图红框是我们需要用到的函数,可以看到输入变量类型是BinaryBitmap,这就要求解码之前要进行类型转化。输出变量类型是Result,查看Result类的情况,如下图所示:


    上图红框的函数可以将其转化为字符串类型输出。本文将解码过程封装为函数,代码如下:

    decode_qr.m文件

    function message = decode_qr(img)
    %功能:QR二维码图像的解码
    %  
    %       变量:
    %   输入:
    %       img:QR二维码图像
    %   输出:

    %       message:解码出来的信息,是字符串或者空

    %数据类型转化
    jimg = im2java2d(img);%将其转化为java类型图像格式
    source = com.google.zxing.client.j2se.BufferedImageLuminanceSource(jimg);
    bitmap = com.google.zxing.BinaryBitmap(com.google.zxing.common.HybridBinarizer(source));
    qr_reader = com.google.zxing.qrcode.QRCodeReader;
    try 
        result = qr_reader.decode(bitmap);
        message = char(result.getText());
    catch e
        message = [];        

    end

    所以当想要识别QR二维码的图像时,调用decode_qr函数即可,前提是需要加载java库的路径,代码如下:

    clear
    clc

    javaaddpath('zxing-core-1.7.jar');%加载Java库的路径
    javaaddpath('zxing-j2se-1.7.jar');%加载Java库的路径
    %%%%%%%%%%QR二维码识别%%%%%%%%
    QRimg = imread('qr.jpg');
    decode_message = decode_qr(QRimg);

    disp( ['译码出来的信息:' decode_message] )

    运行结果如下所示:


    三、总结

    可以看出,想要编程实现本文的目标,对Java要求并不高,用到的类并不多,用到的成员函数也不多,只需要学会类怎么用,成员函数的功能是啥,注意数据类型间的转化,就可以编程实现。然后所有代码的文件夹内容如下:


    本篇文章的配套程序请点击这里下载:

    【Matlab编程实现常见小问题之二】Matlab如何实现QR二维码的生成与识别

    展开全文
  • BP神经网络的设计实例(MATLAB编程)

    万次阅读 多人点赞 2007-11-25 15:42:00
    训练样本定义如下:输入矢量为 p =[-1 -2 3 1 -1 1 5 -3]目标矢量为 t = [-1 -1 1 1]解:本例的 MATLAB 程序如下: close all clear echo on clc % NEWFF——生成一个新的前向神经网络 %...

    例1 采用动量梯度下降算法训练 BP 网络。
    训练样本定义如下:
    输入矢量为    
     p =[-1 -2 3  1 
         -1  1 5 -3]
    目标矢量为   t = [-1 -1 1 1]
    解:本例的 MATLAB 程序如下: 

    close all 
    clear 
    echo on 
    clc 
    % NEWFF——生成一个新的前向神经网络 
    % TRAIN——对 BP 神经网络进行训练 
    % SIM——对 BP 神经网络进行仿真 
    pause        
    %  敲任意键开始 
    clc 
    %  定义训练样本 
    % P 为输入矢量 
    P=[-1,  -2,    3,    1;       -1,    1,    5,  -3];
    % T 为目标矢量 
    T=[-1, -1, 1, 1]; 
    pause; 
    clc 
    %  创建一个新的前向神经网络 
    net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')
    %  当前输入层权值和阈值 
    inputWeights=net.IW{1,1} 
    inputbias=net.b{1} 
    %  当前网络层权值和阈值 
    layerWeights=net.LW{2,1} 
    layerbias=net.b{2} 
    pause 
    clc 
    %  设置训练参数 
    net.trainParam.show = 50; 
    net.trainParam.lr = 0.05; 
    net.trainParam.mc = 0.9; 
    net.trainParam.epochs = 1000; 
    net.trainParam.goal = 1e-3; 
    pause 
    clc 
    %  调用 TRAINGDM 算法训练 BP 网络 
    [net,tr]=train(net,P,T); 
    pause 
    clc 
    %  对 BP 网络进行仿真 
    A = sim(net,P) 
    %  计算仿真误差 
    E = T - A 
    MSE=mse(E) 
    pause 
    clc 
    echo off 

    例2 采用贝叶斯正则化算法提高 BP 网络的推广能力。在本例中,我们采用两种训练方法,即 L-M 优化算法(trainlm)和贝叶斯正则化算法(trainbr),用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中,样本数据可以采用如下MATLAB 语句生成: 
    输入矢量:P = [-1:0.05:1]; 
    目标矢量:randn(’seed’,78341223); 
    T = sin(2*pi*P)+0.1*randn(size(P)); 
    解:本例的 MATLAB 程序如下: 

    close all 
    clear 
    echo on 
    clc 
    % NEWFF——生成一个新的前向神经网络 
    % TRAIN——对 BP 神经网络进行训练
    % SIM——对 BP 神经网络进行仿真 
    pause        
    %  敲任意键开始 
    clc 
    %  定义训练样本矢量 
    % P 为输入矢量 
    P = [-1:0.05:1]; 
    % T 为目标矢量 
    randn('seed',78341223); T = sin(2*pi*P)+0.1*randn(size(P)); 
    %  绘制样本数据点 
    plot(P,T,'+'); 
    echo off 
    hold on; 
    plot(P,sin(2*pi*P),':');        
    %  绘制不含噪声的正弦曲线 
    echo on 
    clc 
    pause 
    clc 
    %  创建一个新的前向神经网络 
    net=newff(minmax(P),[20,1],{'tansig','purelin'}); 
    pause 
    clc 
    echo off 
    clc
    disp('1.  L-M 优化算法 TRAINLM'); disp('2.  贝叶斯正则化算法 TRAINBR'); 
    choice=input('请选择训练算法(1,2):'); 
    figure(gcf); 
    if(choice==1)                 
        echo on         
        clc         
        %  采用 L-M 优化算法 TRAINLM 
        net.trainFcn='trainlm';         
        pause         
        clc         
        %  设置训练参数         
        net.trainParam.epochs = 500;         
        net.trainParam.goal = 1e-6;         
        net=init(net);        
        %  重新初始化           
        pause         
        clc
    elseif(choice==2)         
        echo on         
        clc         
        %  采用贝叶斯正则化算法 TRAINBR         
        net.trainFcn='trainbr';         
        pause         
        clc         
        %  设置训练参数         
        net.trainParam.epochs = 500;         
        randn('seed',192736547);         
        net = init(net);        
        %  重新初始化           
        pause         
        clc         
    end 
    %  调用相应算法训练 BP 网络 
    [net,tr]=train(net,P,T); 
    pause 
    clc 
    %  对 BP 网络进行仿真 
    A = sim(net,P); 
    %  计算仿真误差 
    E = T - A; 
    MSE=mse(E) 
    pause 
    clc 
    %  绘制匹配结果曲线 
    close all; 
    plot(P,A,P,T,'+',P,sin(2*pi*P),':'); 
    pause; 
    clc         
    echo off


    通过采用两种不同的训练算法,我们可以得到如图 1和图 2所示的两种拟合结果。图中的实线表示拟合曲线,虚线代表不含白噪声的正弦曲线,“+”点为含有白噪声的正弦样本数据点。显然,经 trainlm 函数训练后的神经网络对样本数据点实现了“过度匹配”,而经 trainbr 函数训练的神经网络对噪声不敏感,具有较好的推广能力。

    值得指出的是,在利用 trainbr 函数训练 BP 网络时,若训练结果收敛,通常会给出提示信息“Maximum  MU  reached”。此外,用户还可以根据 SSE 和 SSW 的大小变化情况来判断训练是否收敛:当 SSE 和 SSW 的值在经过若干步迭代后处于恒值时,则通常说明网络训练收敛,此时可以停止训练。观察trainbr 函数训练 BP 网络的误差变化曲线,可见,当训练迭代至 320 步时,网络训练收敛,此时 SSE 和 SSW 均为恒值,当前有效网络的参数(有效权值和阈值)个数为 11.7973。 

    例3 采用“提前停止”方法提高 BP 网络的推广能力。对于和例 2相同的问题,在本例中我们将采用训练函数 traingdx 和“提前停止”相结合的方法来训练 BP 网络,以提高 BP 网络的推广能力。 

    解:在利用“提前停止”方法时,首先应分别定义训练样本、验证样本或测试样本,其中,验证样本是必不可少的。在本例中,我们只定义并使用验证样本,即有 
    验证样本输入矢量:val.P = [-0.975:.05:0.975] 
    验证样本目标矢量:val.T = sin(2*pi*val.P)+0.1*randn(size(val.P)) 
    值得注意的是,尽管“提前停止”方法可以和任何一种 BP 网络训练函数一起使用,但是不适合同训练速度过快的算法联合使用,比如 trainlm 函数,所以本例中我们采用训练速度相对较慢的变学习速率算法 traingdx 函数作为训练函数。
    本例的 MATLAB 程序如下:
    close all 
    clear 
    echo on 
    clc 
    % NEWFF——生成一个新的前向神经网络 
    % TRAIN——对 BP 神经网络进行训练 
    % SIM——对 BP 神经网络进行仿真 
    pause        
    %  敲任意键开始 
    clc 
    %  定义训练样本矢量 
    % P 为输入矢量 
    P = [-1:0.05:1]; 
    % T 为目标矢量 
    randn('seed',78341223); 
    T = sin(2*pi*P)+0.1*randn(size(P)); 
    %  绘制训练样本数据点 
    plot(P,T,'+'); 
    echo off 
    hold on; 
    plot(P,sin(2*pi*P),':');        %  绘制不含噪声的正弦曲线 
    echo on 
    clc 
    pause 
    clc 
    %  定义验证样本 
    val.P = [-0.975:0.05:0.975];        %  验证样本的输入矢量 
    val.T = sin(2*pi*val.P)+0.1*randn(size(val.P));        %  验证样本的目标矢量 
    pause 
    clc 
    %  创建一个新的前向神经网络 
    net=newff(minmax(P),[5,1],{'tansig','purelin'},'traingdx'); 
    pause 
    clc 
    %  设置训练参数 
    net.trainParam.epochs = 500; 
    net = init(net); 
    pause 
    clc 
    %  训练 BP 网络 
    [net,tr]=train(net,P,T,[],[],val); 
    pause 
    clc 
    %  对 BP 网络进行仿真 
    A = sim(net,P); 
    %  计算仿真误差 
    E = T - A; 
    MSE=mse(E) 
    pause 
    clc 
    %  绘制仿真拟合结果曲线 
    close all; 
    plot(P,A,P,T,'+',P,sin(2*pi*P),':'); 
    pause; 
    clc         
    echo off 

    下面给出了网络的某次训练结果,可见,当训练至第 136 步时,训练提前停止,此时的网络误差为 0.0102565。给出了训练后的仿真数据拟合曲线,效果是相当满意的。 
    [net,tr]=train(net,P,T,[],[],val); 
    TRAINGDX, Epoch 0/500, MSE 0.504647/0, Gradient 2.1201/1e-006
    TRAINGDX, Epoch 25/500, MSE 0.163593/0, Gradient 0.384793/1e-006
    TRAINGDX, Epoch 50/500, MSE 0.130259/0, Gradient 0.158209/1e-006
    TRAINGDX, Epoch 75/500, MSE 0.086869/0, Gradient 0.0883479/1e-006
    TRAINGDX, Epoch 100/500, MSE 0.0492511/0, Gradient 0.0387894/1e-006
    TRAINGDX, Epoch 125/500, MSE 0.0110016/0, Gradient 0.017242/1e-006
    TRAINGDX, Epoch 136/500, MSE 0.0102565/0, Gradient 0.01203/1e-006
    TRAINGDX, Validation stop.


    例3 用BP网络估计胆固醇含量

    这是一个将神经网络用于医疗应用的例子。我们设计一个器械,用于从血样的光谱组成的测量中得到血清的
    胆固醇含量级别,我们有261个病人的血样值,包括21种波长的谱线的数据,对于这些病人,我们得到了基于 光谱分类的胆固醇含量级别hdl,ldl,vldl。

    (1)  样本数据的定义与预处理。 
    choles_all.mat 文件中存储了网络训练所需要的全部样本数据。
    利用 load 函数可以在工作空间中自动载入网络训练所需的输入数据 p 和目标数据 t,即 
    load choles_all 
    sizeofp = size (p) 
    sizeofp = 21  264 
    sizeoft = size (t) 
    sizeoft = 3   264
    可见,样本集的大小为 264。为了提高神经网络的训练效率,通常要对样本数据作适当的预处理。首先,利用 prestd 函数对样本数据作归一化处理,使得归一化后的输入和目标数据均服从正态分布,即 [pn,meanp,stdp,tn,meant,stdt] = prestd(p,t); 
    然后,利用 prepca 函数对归一化后的样本数据进行主元分析,从而消除样本数据中的冗余成份,起到数据降维的目的。 
    [ptrans,transMat] = prepca(pn,0.001); 
    [R,Q] = size(ptrans) 
    R = 4 Q = 264 
    可见,主元分析之后的样本数据维数被大大降低,输入数据的维数由 21 变为 4。
    (2)  对训练样本、验证样本和测试样本进行划分。 
    为了提高网络的推广能力和识别能力,训练中采用“提前停止”的方法,因此,在训练之前,需要将上面处理后的样本数据适当划分为训练样本集、验证样本集和测试样本集。
    (3)  网络生成与训练。 选用两层 BP 网络,其中网络输入维数为 4,输出维数为 3,输出值即为血清胆固醇的三个指标值大小。网络中间层神经元数目预选为 5,传递函数类型选为 tansig 函数,输出层传递函数选为线性函数 purelin,训练函数设为 trainlm。网络的生成语句如下:
    net = newff(minmax(ptr),[5 3],{'tansig' 'purelin'},'trainlm'); 
    利用 train 函数对所生成的神经网络进行训练,训练结果如下: 
    [net,tr]=train(net,ptr,ttr,[],[],val,test); 
    见,网络训练迭代至第 20 步时提前停止,这是由于验证误差已经开始变大。利用下面语句可以绘制出训练误差、验证误差和测试误差的变化曲线,如图 4.50 所示。由图可见,验证误差和测试误差的变化趋势基本一致,说明样本集的划分基本合理。由训练误差曲线可见,训练误差结果也是比较满意的。
    (4)  网络仿真。 为了进一步检验训练后网络的性能,下面对训练结果作进一步仿真分析。利用 postreg函数可以对网络仿真的输出结果和目标输出作线性回归分析,并得到两者的相关系数,从而可以作为网络训练结果优劣的判别依据。仿真与线性回归分析如下: 
    an = sim(net,ptrans); 
    a = poststd(an,meant,stdt); 
    for i=1:3         
       figure(i)         
       [m(i),b(i),r(i)] = postreg(a(i,:),t(i,:));  
    end 

    %导入原始测量数据
    load choles_all;
    %对原始数据进行规范化处理,prestd是对输入数据和输出数据进行规范化处理,
    %prepca可以删除一些数据,适当地保留了变化不小于0.01的数据
    [pn,meanp,stdp,tn,meant,stdt]=prestd(p,t);
    [ptrans,transMat]=prepca(pn,0.001);
    [R,Q]=size(ptrans) 
    %将原始数据分成几个部分作为不同用途四分已用于确证,四分一用于测试,二分一用于训练网络
    iitst=2:4:Q;
    iival=4:4:Q;
    iitr=[1:4:Q 3:4:Q];
    %vv是确证向量,.P是输入,.T是输出,vt是测试向量
    vv.P=ptrans(:,iival); 
    vv.T=tn(:,iival);
    vt.P=ptrans(:,iitst); 
    vt.T=tn(:,iitst);
    ptr=ptrans(:,iitr); 
    ttr=tn(:,iitr);
    %建立网络,隐层中设计5个神经元,由于需要得到的是3个目标,所以网络需要有3个输出
    net=newff(minmax(ptr),[5 3],{'tansig' 'purelin'},'trainlm');
    %训练网络
    net.trainParam.show=5;
    [net,tr]=train(net,ptr,ttr,[],[],vv,vt);
    %绘出训练过程中各误差的变化曲线
    plot(tr.epoch,tr.perf,'r',tr.epoch,tr.vperf,':g',tr.epoch,tr.tperf,'-.b');
    legend('训练','确证','测试',-1);
    ylabel('平方误差');
    xlabel('时间');
    pause;
    %将所有数据通过网络(包括训练,确证,测试),然后得到网络输出和相应目标进行线性回归,
    %对网络输出进行反规范化变换,并绘出个各级别的线性回归结果曲线
    an=sim(net,ptrans);
    a=poststd(an,meant,stdt);
    %得到3组输出,所以进行3次线性回归
    for i=1:3
    figure(i)
    [m(i),b(i),r(i)] = postreg(a(i,:),t(i,:));
    end

    网络输出数据和目标数据作线性回归后,前面两个输出对目标的跟踪比较好,相应的R值接近0.9。而第三个输出却并不理想,我们很可能需要在这点上做更多工作。可能需要使用其它的网络结构(使用更多的隐层神经元),或者是在训练技术上使用贝页斯规范华而不实使用早停的方法。
    把隐层数目改为20个时,网络训练的3种误差非常接近,得到的结果R也相应提高。但不代表神经元越多就越精确。
    多层神经网络能够对任意的线性或者非线性函数进行逼近,其精度也是任意的。但是BP网络不一定能找到解。训练时,学习速率太快可能引起不稳定,太慢则要花费太多时间,不同的训练算法也对网络的性能有很大影响。BP网络对隐层的神经元数目也是很敏感的,太少则很难适应,太多则可能设计出超适应网络。
     

    注:例子均来自于互联网,本人的工作只是将多个例子整合在一起。

    展开全文
  • 这是VC与Labview、Matlab编程论文资料,全部为pdf格式,讲述有VC编程技巧、也有VC与Labview混合编程, VC与matlab混合编程,有365个,约500M,分成4个【独立】压缩包,如果想要全部的论文则需要下载全部压 缩包,...
  • MATLAB编程讲义及实例-MATLAB编程_讲义及实例.ppt MATLAB编程_讲义及实例
  • 一些matlab的基础资料-matlab编程的基础知识.doc 这些是我在学习期间自己做的一些笔记,简洁明了,分享给大家,希望对刚学习的朋友有所帮助,主要是高等数学内容 逻辑运算:matlab编程基础の基础.doc ...
  • Matlab编程】Matlab高效编程技巧

    千次阅读 2014-06-16 18:39:20
    3.给数组预分配空间是基本的高效编程准则之一。如果不预先分配内存具体的动态扩充数组内存的实现方式如下: 如果预分配空间,则只将新添加的值放入连续的内存中,而不会将整个数组重新分配空间。 4.matlab也可以...
    1.默认状态下,matlab显示精度是short型,而默认的计算精度是double型,并且显示精度与计算精度没有关系。
    2. 一只失明的猫的问题:注意方法!

    3.给数组预分配空间是基本的高效编程准则之一。如果不预先分配内存具体的动态扩充数组内存的实现方式如下:


    如果预分配空间,则只将新添加的值放入连续的内存中,而不会将整个数组重新分配空间。
    4.matlab也可以使用window命令,只需要在系统命令前加!或者dos:例如!shutdown -s 会关闭电脑,这样可以想到,我们可以用matlab做一个简单的定时关机软件。
    5.逻辑索引的速度大于数值索引:eg: A=rand(1000); a1=A(find(A>0.3)); a2=A(A>0.3); find函数返回的是数值索引。
    6.使用循环时的两种高效方法:1.按列遍历;2.循环次数多的放在内层。
    7.在目前的高版本中,循环已不是耗时的主要原因,而是函数调用。
    8.edit 、type、open可以查看部分函数的源代码,内建函数不行。
    9.匿名函数可以完全更好的替代incline函数。
    10.build-in函数的开销最低。
    11.更多的使用向量化函数。eg: accumarray、arrayfun 、bsxfun 、cellfun 、spfun 、structfun
    12.符号计算虽说语法简单,但是由于精确性,在计算过程中会保留大量的中间结果,这样容易导致内存溢出。
    13.matlab的界面元素都是由Java实现的,可以通过运行matlab -nojvm来启动matlab,从而减少内存消耗。


    原文:http://blog.csdn.net/tengweitw/article/details/31410865

    作者:nineheadedbird


    展开全文
  • 这是VC与Labview、Matlab编程论文资料,全部为pdf格式,讲述有VC编程技巧、也有VC与Labview混合编程, VC与matlab混合编程,有365个,约500M,分成4个【独立】压缩包,如果想要全部的论文则需要下载全部压 缩包,...
  • Matlab编程实现FFT实践及频谱分析-Matlab编程实现FFT实践及频谱分析.doc Matlab编程实现FFT实践及频谱分析 Matlab4.jpg 管理员提示:在发布文献的时候,请对文献做简单介绍。
  • matlab编程指南

    2010-04-05 12:56:11
    matlab编程是matlab初学者的必备手册,有了它你的学习会表的轻松,快下载吧
  • 一些matlab的基础资料-逻辑运算:matlab编程基础の基础.doc 这些是我在学习期间自己做的一些笔记,简洁明了,分享给大家,希望对刚学习的朋友有所帮助,主要是高等数学内容 逻辑运算:matlab编程基础の基础....
  • matlab编程】matlab随机数函数

    千次阅读 2014-03-11 20:06:24
    Matlab内部函数 a. 基本随机数 Matlab中有两个最基本生成随机数的函数。 1.rand() 生成(0,1)区间上均匀分布的随机变量。基本语法: rand([M,N,P ...]) 生成排列成M*N*P... 多维向量的随机数。如果只写M...
  • matlab编程书籍

    2018-07-01 12:05:28
    Author Craig Lent's 1 st edition of Learning to Program with MATLAB: Building GUI Tools teaches the core concepts of computer programming, such as arrays, loops, function, basic data structures, etc.,...
  • matlab编程

    2017-12-01 21:44:28
    MATLAB-MOOC-HW.rar ,是corsera上 MATLAB 程序设计入门这么课的2017年编程题,最后一周只做完了2个题。
  • 精通MATLAB编程

    2010-01-21 10:27:05
    精通MATLABMATLAB有很多的功能这本电子书有65M,我是分成7个小压缩包来压缩的。里面介绍的很详细!希望对想学习MATLAB的人有用01!
  • 二分法matlab编程

    2014-04-13 23:52:32
    matlab二分法编程 就是用来近似方程解的算法
  • Matlab编程】哈夫曼编码的Matlab实现

    万次阅读 多人点赞 2015-05-04 11:31:45
    不过在通信仿真中,经常要使用到Matlab编程,所以为了方便起见,这里用Matlab实现的哈夫曼编码的功能。至于哈夫曼编译码的基本原理,我们可以参考之前的文章《哈夫曼树及编译码》,里面有详细的说明及图解过程。下面...
  • MATLAB编程学习

    2019-02-20 21:29:32
    MATLAB GUI 设计学习,编程学习。
  • MATLAB编程规范

    2018-08-21 21:04:38
    本指南主要考虑的是代码的正确性、清晰性与通用性。本指南的目的在于帮助写出更可能正确、易于理解、更具共享性与更利于维护的代码。
  • matlab编程求逆矩阵

    2009-07-02 19:34:46
    数值分析的作业,高斯列主元消去法求逆矩阵
  • matlab编程计算速度能提高100倍慢的原因是使用不对-matlab编程,计算速度能提高100倍。慢的原因,是使用不对.doc Loren on the Art of MATLAB March 1st, 2007 Creating Sparse Finite-Element Matrices in ...
  • Matlab编程】matlab 画图

    千次阅读 2014-05-30 19:38:05
    1. 不用截图工具就可以将图保存成图像格式,并且没有背景颜色:saveas(gcf ,’outputname’,’png/jpg’),第三项省略时默认为fig.m文件 2. 计算形如(-1)^2/3,应该是默认先算(-1)^(1/3),plot的时候命令窗会...
  • matlab编程指南.zip

    2019-06-27 13:41:11
    MATLAB编程指南》系统归纳和总结了优化算法及算法的实战经验!书中提供了数百个MATLAB计算、编程、仿真、算法及系统应用的典型实例,可以二次开发! 资源为该书的ppt课件和源码。
  • 霍纳算法matlab编程

    2015-02-02 02:32:46
    霍纳算法matlab编程,对方程组的算法,代码,和方程都在word中,有兴趣的同学可以看看
  • 有限元Matlab编程

    2015-08-23 12:12:38
    有限元Matlab编程,50行轻松学会,有限元有限元Matlab编程!!!
  • matlab编程】Matlab版扫雷

    万次阅读 2014-03-01 18:36:08
    本来想用matlab编写全自动扫雷程序用来作弊,可是后来发现扫雷问题是NP完全问题(正如:旅行商NP难问题一样不能被解决),便放弃了。于是编写了类似扫雷游戏(没有经过大量测试,可能有bug,效率也不高,作弊:在...
  • MATLAB编程实现FFT

    2018-05-16 20:46:23
    编写了一个简单的小程序,直接用MATLAB编程来实现fft波形的谐波分析

空空如也

1 2 3 4 5 ... 20
收藏数 10,039
精华内容 4,015
关键字:

matlab编程

matlab 订阅