精华内容
下载资源
问答
  • 运行时间对比: MATLAB2020a MATLAB2016a Python3.7 ...运行:将该程序保存为.m文件,之后运行该文件,取运行时间稳定后的平均值。(如果将程序直接输入在命令行,运行速度会更快) Python程序如下:

    运行时间对比:

    MATLAB2020a MATLAB2016a Python3.7
    0.07s 9.35s 56.02s

    MATLAB程序如下:

    tic
    for i=1:100000000
        s=0;
        s=s+1;
        s=sqrt(s);
        s=exp(s);
        s=2*s;
        s=s/2;
    end
    toc
    

    运行:将该程序保存为.m文件,之后运行该文件,取运行时间稳定后的平均值。(如果将程序直接输入在命令行,运行速度会更快)

    Python程序如下:

    import time
    import math
    
    start = time.time()
    for i in range(100000000):
                s = 0
                s = s+1
                s = math.sqrt(s)
                s = math.exp(s)
                s = s*2
                s = s/2
    end = time.time()
    print(end-start)
    
    

    运行:编译器为pycharm,之间运行以上代码,取运行时间稳定后的平均值。

    另外,对于MATLAB2016a:

    代码1:

    clear
    tic
    for i=1:1000000
        s(i)=cos(i);
    end
    toc
    

    代码2:

    clear
    tic
    i=1:1:1000000;
    s=cos(i);
    toc
    
    代码1 代码2
    0.14s 0.01s

    对于MATLAB2020a:

    代码1:

    clear
    tic
    for i=1:1000000
        s(i)=cos(i);
    end
    toc
    

    代码2:

    clear
    tic
    i=1:1:1000000;
    s=cos(i);
    toc
    
    代码1 代码2
    0.03s 0.01s

    总结

    • MATLAB2020a比起2016a进步很大,要及时更新换代
    • MATLAB2020a对for循环有较大改进
    • Python出乎意料的慢,不知道是不是对Python不熟悉,错误操作了,希望大佬指正
    展开全文
  • MATLAB学习小记

    2014-06-03 10:03:00
    用Desktop-----Profiler对程序运行时间进行统计。实际是查看需要进行优化的地方,如何进行优化,减少不必要的时间浪费。 然后就是利用Profiler进行查找,自己查看即可。 2、M文件的命名规则; 1.文件名命名要用...

    1、如何查找Matlab中的算法源代码

    首先运行程序。用Desktop-----Profiler对程序运行时间进行统计。实际是查看需要进行优化的地方,如何进行优化,减少不必要的时间浪费。

    然后就是利用Profiler进行查找,自己查看即可。

    2、M文件的命名规则;

    1.文件名命名要用英文字符,第一个字符不能是数字。
    2.文件名不要取为matlab的一个固有函数,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成

    原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误。

    3、文件存储路径一定为英文。
    4、m文件起名不能为两个单词,random walk,应该写成random_walk。

    3、有关坐标定位的函数集锦

    1.绘制二维曲线的最基本函数plot2.双纵坐标函数plotyy3.坐标控制函数的调用格式为:axis([xmin xmax ymin ymax zmin zmax])axis函数功能丰富,常用的用法还有:axis equal 纵、横坐标轴采用等长刻度axis square 产生正方形坐标系(缺省为矩形)axis auto 使用缺省设置axis off 取消坐标轴axis on 显示坐标轴grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。4.图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p)5.绘制二维图形的其他函数1. 其他形式的线性直角坐标图在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,…)6.极坐标图polar函数用来绘制极坐标图,其调用格式为:polar(theta,rho,选项)其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。7.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…)8.对函数自适应采样的绘图函数fplot函数的调用格式为: fplot(fname,lims,tol,选项)9.绘制三维曲线的最基本函数 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 10.三维曲面1.平面网格坐标矩阵的生成(1)利用矩阵运算生成。x=a:dx:b; y=(c:dy:d)';X=ones(size(y))*x;Y=y*ones(size(x));(2)利用meshgrid函数生成。x=a:dx:b; y=c:dy:d;[X,Y]=meshgrid(x,y);10.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c) surf(x,y,z,c)标准三维曲面sphere函数的调用格式为: [x,y,z]=sphere(n)cylinder函数的调用格式为: [x,y,z]=sphere(R,n)MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。11.其他三维图形 条形图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、pie3和fill3。此外,还有三维曲面的等高线图。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。

    matlab绘图的时候只用plot函数出来的图不一定符合自己最想要的格式, 经常要对坐标的数字、范围、间隔做处理。

    虽然不是什么很难的操作,但是确实常用,也容易忘记,所以就放在这里说明一下:

      

    x = (1:50);
    y = sin(x);
    plot(x,y,'-r*');
    xlabel('x name');% x轴名称
    ylabel('y name');
    legend('xxx'); %线条注释,多条的话: legend('xxx','xxx2','xxx3')

    xlim([2, 46]);%只设定x轴的绘制范围
    set(gca,'XTick',[2:2:46]) %改变x轴坐标间隔显示 这里间隔为2

    %以上就可以对x轴做很好的控制了,y轴类似。

    axis([2,46,0,2]) % axis([xmin,xmax,ymin,ymax]),用这个语句可以对x,y轴的上限与下限绘制范围一起做控制,但是间隔还是要用上面的set来改



    4、matlab中的图像一般是十进制,数据类型转换用double()

    ===>在数字图像处理中,将图像输入为矩阵,矩阵中的数据是八进制的还是十进制的?为什么在进行运算====>的时候会出现:??? Undefined function or method 'sqrt' for input arguments of type 'uint8'.Error ===>in ==> Untitled12 at 20      G=sqrt(E*F);
    解答:
    matlab中的图像一般是十进制,
    Undefined function or method 'sqrt' for input arguments of type 'uint8'.
    意思是sqrt要求输入的变量或矩阵是double类型的,这样计算出来的结果才更加有意义。
    uint8的含义是无符号8位整数(0——255)范围,
    只要将你的输入类型强制转换成double即可


    5、matlab中,以e为底的自然对数是用log()计算的,而e的指数函数用exp()计算。
    这个小问题纠结了一小时,fuck。还是要加强学习啊!!!!!!!!!!

    6,图像大小=图像宽度*图像高度*颜色深度/8
    即一张图片宽680像素,高480像素,每个像素点上的颜色深度为16位(即图像上的颜色种类可以表示2的16次种)。则图像大小为680*480*16/8=652800(单位:字节,即B)因为1KB=1024B,652800/1024=637.5KB这就是像素与图像大小的关系。图像大小由图像像素与颜色深度决定的。

    7/首先要明白一个概念:像素可不是长度单位,它是表示图像清晰度的,

    那么到底像素和厘米怎么换算?
    这要看分辨率,才能将像素和实际尺寸对应起来的。
    一般我们是72像素/平方英寸,或者300像素/平方英寸
    72像素/平方英寸的时候 就是 28像素/1厘米
    300像素/平方英寸的时候 就是 119像素/1厘米

    如我一图片,实际宽是20CM,在PS里面量也是200MM,可实际的图片的宽却是570,符合上面红色的第一条

    看分辩率分辩率是**像素/厘米 那一cm就有**像素PX:CM=28.35:1

    要看分辨率,1000dpi的1cm见方打印出来和10dpi的1cm见方打印出来是一样大小的,都是1cmX1cm,但是他们所包含的像素就大不相同,相差了几个数量级。

    dpi的意思是,dot per inch,就是每英寸多少点(点就是像素了)。所以72dpi指的是一英寸距离,包含72像素;300dpi指的是一英寸距离,包含300像素。

    分辨率相乘的结果就是像素,如分辨率是1024×768,那么,像素就是它俩的乘积约合78万多像素。

    1英寸=2.54厘米

    72像素/英寸=28.346像素/厘米

    300像素/英寸=118.11像素/厘米

    1 厘米=0.3937 英寸
    1 英寸=2.54 厘米
    以常见1024像素对比:
    1024像素=3.413英寸=8.67厘米 (300像素/英寸dpi 每英寸≈0.003333像素)

    所以1024像素的厘米尺寸就是:1024*0.003333*2.54

    1024像素=14.222英寸=36.12厘米 (72像素/英寸dpi 每英寸≈0.013889像素)

    所以1024像素的厘米尺寸就是:1024*0.013889*2.54

    ============================================================================================================

    图像的合成;Matlab中的各种逻辑运算方式求解。

    加法:C=A+B去除叠加噪音生成叠加效果
    减法:C=A-B去除叠加图案检测同一场景中的图像变化
    乘法:C=A*B图像的局部显示
    求反:~A获得负像获得子图像的补图像
    异或:A⊙B获得相交图像

    clear all
    A=imread('clev1.bmp');
    B=imread('clev2.bmp');
    figure('Name','原始图像') %创建图像窗口%
    subplot(1,2,1)   %拆分窗口%
    imshow(A);title('原始A'); %显示指定工作区图像%
    colorbar   %添加色度条%
    subplot(1,2,2)
    imshow(B);title('原始B');
    colorbar

    figure('Name','图像算数运算')
    res1=imadd(A,B);  %A+B%
    res2=imsubtract(A,B);  %A-B%
    res2_2=imsubtract(B,A);  %B-A%
    res3=immultiply(A,B);  %A*B%
    res4=imdivide(A,B);  %A/B%
    res4_2=imdivide(B,A);  %B/A%
    subplot(2,3,1)
    imshow(res1);title('A加B');
    subplot(2,3,2)
    imshow(res2);title('A减B');
    subplot(2,3,3)
    imshow(res2_2);title('B减A');
    subplot(2,3,4)
    imshow(res3);title('A乘B');
    subplot(2,3,5)
    imshow(res4);title('A除B');
    subplot(2,3,6)
    imshow(res4_2);title('B除A');

    C=A(:,:,1);  %取单色%
    D=B(:,:,1); 
    figure('Name','图像逻辑运算')
    res1=C&D;  %C&D%
    res2=C|D;  %C|D%
    res3=xor(C,D);  %xor C D%
    res3_2=xor(D,C)  %xor D C%
    res4=not(C)&not(D); %~C%
    res4_2=not(C)|not(D); %~D%
    subplot(2,3,1)
    imshow(res1);title('C&D');
    subplot(2,3,2)
    imshow(res2);title('C|D');
    subplot(2,3,3)
    imshow(res3);title('xor C D');
    subplot(2,3,4)
    imshow(res3_2);title('xor D C');
    subplot(2,3,5)
    imshow(res4);title('~C&~D');
    subplot(2,3,6)
    imshow(res4_2);title('~C|~D');

    展开全文
  • % N 种群规模(偶数) % Pm 变异概率 % T m×n的矩阵,存储m个工件n个工序的加工时间 % P 1×n的向量,n个工序中,每一个工序所具有的机床数目 % 输出参数列表 % Zp 最优的Makespan值 % Y1p 最优方案中...
  • 在我在相对较大的时间序列上运行这两个实现(大约95k+个样本),具体决于时间序列。MATLAB实现在45秒到1分钟内完成计算。python实现基本上永远不会完成。我把tqdm放到python for循环上,上面的循环仅以~1.85s/it的...

    我有一个关于代码性能的问题。一个用python实现,一个用MATLAB实现。代码计算时间序列的样本熵(听起来很复杂,但基本上是一堆for循环)。在

    我在相对较大的时间序列上运行这两个实现(大约95k+个样本),具体取决于时间序列。MATLAB实现在45秒到1分钟内完成计算。python实现基本上永远不会完成。我把tqdm放到python for循环上,上面的循环仅以~1.85s/it的速度移动,估计完成时间超过50小时(我让它运行了15分钟以上,迭代次数相当一致)。在

    输入和运行时示例:

    MATLAB(约52秒):a = rand(1, 95000)

    sampenc(a, 4, 0.1 * std(a))

    Python(目前5分钟,预计49小时):

    ^{pr2}$

    Python实现:# https://github.com/nikdon/pyEntropy

    def sample_entropy(time_series, sample_length, tolerance=None):

    """Calculate and return Sample Entropy of the given time series.

    Distance between two vectors defined as Euclidean distance and can

    be changed in future releases

    Args:

    time_series: Vector or string of the sample data

    sample_length: Number of sequential points of the time series

    tolerance: Tolerance (default = 0.1...0.2 * std(time_series))

    Returns:

    Vector containing Sample Entropy (float)

    References:

    [1] http://en.wikipedia.org/wiki/Sample_Entropy

    [2] http://physionet.incor.usp.br/physiotools/sampen/

    [3] Madalena Costa, Ary Goldberger, CK Peng. Multiscale entropy analysis

    of biological signals

    """

    if tolerance is None:

    tolerance = 0.1 * np.std(time_series)

    n = len(time_series)

    prev = np.zeros(n)

    curr = np.zeros(n)

    A = np.zeros((sample_length, 1)) # number of matches for m = [1,...,template_length - 1]

    B = np.zeros((sample_length, 1)) # number of matches for m = [1,...,template_length]

    for i in range(n - 1):

    nj = n - i - 1

    ts1 = time_series[i]

    for jj in range(nj):

    j = jj + i + 1

    if abs(time_series[j] - ts1) < tolerance: # distance between two vectors

    curr[jj] = prev[jj] + 1

    temp_ts_length = min(sample_length, curr[jj])

    for m in range(int(temp_ts_length)):

    A[m] += 1

    if j < n - 1:

    B[m] += 1

    else:

    curr[jj] = 0

    for j in range(nj):

    prev[j] = curr[j]

    N = n * (n - 1) / 2

    B = np.vstack(([N], B[:sample_length - 1]))

    similarity_ratio = A / B

    se = - np.log(similarity_ratio)

    se = np.reshape(se, -1)

    return se

    MATLAB实现:function [e,A,B]=sampenc(y,M,r);

    %function [e,A,B]=sampenc(y,M,r);

    %

    %Input

    %

    %y input data

    %M maximum template length

    %r matching tolerance

    %

    %Output

    %

    %e sample entropy estimates for m=0,1,...,M-1

    %A number of matches for m=1,...,M

    %B number of matches for m=0,...,M-1 excluding last point

    n=length(y);

    lastrun=zeros(1,n);

    run=zeros(1,n);

    A=zeros(M,1);

    B=zeros(M,1);

    p=zeros(M,1);

    e=zeros(M,1);

    for i=1:(n-1)

    nj=n-i;

    y1=y(i);

    for jj=1:nj

    j=jj+i;

    if abs(y(j)-y1)

    run(jj)=lastrun(jj)+1;

    M1=min(M,run(jj));

    for m=1:M1

    A(m)=A(m)+1;

    if j

    B(m)=B(m)+1;

    end

    end

    else

    run(jj)=0;

    end

    end

    for j=1:nj

    lastrun(j)=run(j);

    end

    end

    N=n*(n-1)/2;

    B=[N;B(1:(M-1))];

    p=A./B;

    e=-log(p);

    我也尝试过其他一些python实现,它们都有相同的缓慢结果:

    vectorized-sample-entropy

    我不认为计算机问题,因为它在MATLAB中运行相对论很快。在

    据我所知,在实现方面,这两组代码是相同的。我不知道python实现为什么这么慢。我能理解几秒钟的差异,但不会有这么大的差异。让我知道你对为什么这样做的想法,或者关于如何改进python版本的建议。在

    顺便说一句:我使用的是python3.6.5和numpy1.14.5和matlabr2018a

    展开全文
  • ---matlab应用小笔记

    千次阅读 2012-03-12 18:13:30
    用Desktop-----Profiler对程序运行时间进行统计。实际是查看需要进行优化的地方,如何进行优化,减少不必要的时间浪费。 然后就是利用Profiler进行查找,自己查看即可。 2、M文件的命名规则; 1.文件名命名要用...

    1、如何查找Matlab中的算法源代码

    首先运行程序。用Desktop-----Profiler对程序运行时间进行统计。实际是查看需要进行优化的地方,如何进行优化,减少不必要的时间浪费。

    然后就是利用Profiler进行查找,自己查看即可。

    2、M文件的命名规则;

    1.文件名命名要用英文字符,第一个字符不能是数字。
    2.文件名不要取为matlab的一个固有函数,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成

    原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误。

    3、文件存储路径一定为英文。
    4、m文件起名不能为两个单词,random walk,应该写成random_walk。

    3、有关坐标定位的函数集锦

    1.绘制二维曲线的最基本函数plot2.双纵坐标函数plotyy3.坐标控制函数的调用格式为:axis([xmin xmax ymin ymax zmin zmax])axis函数功能丰富,常用的用法还有:axis equal 纵、横坐标轴采用等长刻度axis square 产生正方形坐标系(缺省为矩形)axis auto 使用缺省设置axis off 取消坐标轴axis on 显示坐标轴grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。4.图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p)5.绘制二维图形的其他函数1. 其他形式的线性直角坐标图在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,…)6.极坐标图polar函数用来绘制极坐标图,其调用格式为:polar(theta,rho,选项)其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。7.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…)8.对函数自适应采样的绘图函数fplot函数的调用格式为: fplot(fname,lims,tol,选项)9.绘制三维曲线的最基本函数 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 10.三维曲面1.平面网格坐标矩阵的生成(1)利用矩阵运算生成。x=a:dx:b; y=(c:dy:d)';X=ones(size(y))*x;Y=y*ones(size(x));(2)利用meshgrid函数生成。x=a:dx:b; y=c:dy:d;[X,Y]=meshgrid(x,y);10.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c) surf(x,y,z,c)标准三维曲面sphere函数的调用格式为: [x,y,z]=sphere(n)cylinder函数的调用格式为: [x,y,z]=sphere(R,n)MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。11.其他三维图形 条形图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、pie3和fill3。此外,还有三维曲面的等高线图。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。

    matlab绘图的时候只用plot函数出来的图不一定符合自己最想要的格式, 经常要对坐标的数字、范围、间隔做处理。

    虽然不是什么很难的操作,但是确实常用,也容易忘记,所以就放在这里说明一下:

      

    x = (1:50);
    y = sin(x);
    plot(x,y,'-r*');
    xlabel('x name');% x轴名称
    ylabel('y name');
    legend('xxx'); %线条注释,多条的话: legend('xxx','xxx2','xxx3')

    xlim([2, 46]);%只设定x轴的绘制范围
    set(gca,'XTick',[2:2:46]) %改变x轴坐标间隔显示 这里间隔为2

    %以上就可以对x轴做很好的控制了,y轴类似。

    axis([2,46,0,2]) % axis([xmin,xmax,ymin,ymax]),用这个语句可以对x,y轴的上限与下限绘制范围一起做控制,但是间隔还是要用上面的set来改



    4、matlab中的图像一般是十进制,数据类型转换用double()

    ===>在数字图像处理中,将图像输入为矩阵,矩阵中的数据是八进制的还是十进制的?为什么在进行运算====>的时候会出现:??? Undefined function or method 'sqrt' for input arguments of type 'uint8'.Error ===>in ==> Untitled12 at 20      G=sqrt(E*F);
    解答:
    matlab中的图像一般是十进制,
    Undefined function or method 'sqrt' for input arguments of type 'uint8'.
    意思是sqrt要求输入的变量或矩阵是double类型的,这样计算出来的结果才更加有意义。
    uint8的含义是无符号8位整数(0——255)范围,
    只要将你的输入类型强制转换成double即可


    5、matlab中,以e为底的自然对数是用log()计算的,而e的指数函数用exp()计算。
    这个小问题纠结了一小时,fuck。还是要加强学习啊!!!!!!!!!!

    6,图像大小=图像宽度*图像高度*颜色深度/8
    即一张图片宽680像素,高480像素,每个像素点上的颜色深度为16位(即图像上的颜色种类可以表示2的16次种)。则图像大小为680*480*16/8=652800(单位:字节,即B)因为1KB=1024B,652800/1024=637.5KB这就是像素与图像大小的关系。图像大小由图像像素与颜色深度决定的。

    7/首先要明白一个概念:像素可不是长度单位,它是表示图像清晰度的,

    那么到底像素和厘米怎么换算?
    这要看分辨率,才能将像素和实际尺寸对应起来的。
    一般我们是72像素/平方英寸,或者300像素/平方英寸
    72像素/平方英寸的时候 就是 28像素/1厘米
    300像素/平方英寸的时候 就是 119像素/1厘米

    如我一图片,实际宽是20CM,在PS里面量也是200MM,可实际的图片的宽却是570,符合上面红色的第一条

    看分辩率分辩率是**像素/厘米 那一cm就有**像素PX:CM=28.35:1

    要看分辨率,1000dpi的1cm见方打印出来和10dpi的1cm见方打印出来是一样大小的,都是1cmX1cm,但是他们所包含的像素就大不相同,相差了几个数量级。

    dpi的意思是,dot per inch,就是每英寸多少点(点就是像素了)。所以72dpi指的是一英寸距离,包含72像素;300dpi指的是一英寸距离,包含300像素。

    分辨率相乘的结果就是像素,如分辨率是1024×768,那么,像素就是它俩的乘积约合78万多像素。

    1英寸=2.54厘米

    72像素/英寸=28.346像素/厘米

    300像素/英寸=118.11像素/厘米

    1 厘米=0.3937 英寸
    1 英寸=2.54 厘米
    以常见1024像素对比:
    1024像素=3.413英寸=8.67厘米 (300像素/英寸dpi 每英寸≈0.003333像素)

    所以1024像素的厘米尺寸就是:1024*0.003333*2.54

    1024像素=14.222英寸=36.12厘米 (72像素/英寸dpi 每英寸≈0.013889像素)

    所以1024像素的厘米尺寸就是:1024*0.013889*2.54

    ============================================================================================================

    图像的合成;Matlab中的各种逻辑运算方式求解。

    加法:C=A+B去除叠加噪音生成叠加效果
    减法:C=A-B去除叠加图案检测同一场景中的图像变化
    乘法:C=A*B图像的局部显示
    求反:~A获得负像获得子图像的补图像
    异或:A⊙B获得相交图像

    clear all
    A=imread('clev1.bmp');
    B=imread('clev2.bmp');
    figure('Name','原始图像') %创建图像窗口%
    subplot(1,2,1)   %拆分窗口%
    imshow(A);title('原始A'); %显示指定工作区图像%
    colorbar   %添加色度条%
    subplot(1,2,2)
    imshow(B);title('原始B');
    colorbar

    figure('Name','图像算数运算')
    res1=imadd(A,B);  %A+B%
    res2=imsubtract(A,B);  %A-B%
    res2_2=imsubtract(B,A);  %B-A%
    res3=immultiply(A,B);  %A*B%
    res4=imdivide(A,B);  %A/B%
    res4_2=imdivide(B,A);  %B/A%
    subplot(2,3,1)
    imshow(res1);title('A加B');
    subplot(2,3,2)
    imshow(res2);title('A减B');
    subplot(2,3,3)
    imshow(res2_2);title('B减A');
    subplot(2,3,4)
    imshow(res3);title('A乘B');
    subplot(2,3,5)
    imshow(res4);title('A除B');
    subplot(2,3,6)
    imshow(res4_2);title('B除A');

    C=A(:,:,1);  %取单色%
    D=B(:,:,1); 
    figure('Name','图像逻辑运算')
    res1=C&D;  %C&D%
    res2=C|D;  %C|D%
    res3=xor(C,D);  %xor C D%
    res3_2=xor(D,C)  %xor D C%
    res4=not(C)&not(D); %~C%
    res4_2=not(C)|not(D); %~D%
    subplot(2,3,1)
    imshow(res1);title('C&D');
    subplot(2,3,2)
    imshow(res2);title('C|D');
    subplot(2,3,3)
    imshow(res3);title('xor C D');
    subplot(2,3,4)
    imshow(res3_2);title('xor D C');
    subplot(2,3,5)
    imshow(res4);title('~C&~D');
    subplot(2,3,6)
    imshow(res4_2);title('~C|~D');


     

    (自制两幅色阶图片上半部分相同,下部不同,黑色块用于逻辑运算时显示计算效果)


    (~代表取反)

    ===============================================================================

    Matlab 基础部分:(图像) 读取 储存 显示 矩阵 信息

    1.       Matlab中图像的基本操作和处理

    图像读取函数:imread()
    将图像文件读入工作区A = imread(filename, fmt)
    实例:a=imread('P:\color1.jpg');

    图像存储函数:imwrite()
    将工作区数据写入标准图像文件imwrite(A,filename,fmt)
    实例:imwrite(a,'file.bmp','bmp')

    显示图像函数:imshow()  
    根据工作区数据格式显示为指定范围图像imshow(I,[low high])
    实例:imshow(a,[1 20]) 

    图像函数:image()
    将工作区数据显示为坐标属性图像image(x,y,C,'PropertyName',PropertyValue,...)
    实例:image(1000,500,a)

    矩阵尺寸函数:size()
    获取工作区矩阵尺寸
    实例:[m n]=size(a)

    信息:whos
    获取记录信息log.whos('all')

    M文件操作:save/load
    存储到Mat文件

    =========================================================

    Matlab 图像格式的转换
    灰度图像与索引图像的相互转换:gray2ind( )  ind2gray( )
    RGB图像与灰度图像的转换:rgb2gray( )
    二进制图像转换:BW=im2bw()

    程序和图像

    clear all;
    RGB=imread('s.jpg');             %要求输入为3色 uint8阵列图像 所以采用JPG图片%

    [X,MAP]=rgb2ind(RGB,128);      %RGB转索引 128色%
    I=rgb2gray(RGB);               %RGB转灰度%
    BW=im2bw(RGB,0.5);           %RGB转二色 阈值0.5 %
    iRGB=ind2rgb(X,MAP);          %索引转RGB%
    iI=ind2gray(X,MAP);             %索引转灰度%
    iBW=im2bw(X,MAP,0.5);         %索引转二色%
    [x2,map2]=gray2ind(I,128);        %灰度转索引 128色%
    gBW=im2bw(I,0.5);              %灰度转二色%

    figure('Name','图像转换')          %创建图像窗口%
    subplot(3,3,1)                   %拆分窗口%
    imshow(RGB);title('原始');         %显示指定工作区图像%
    colorbar                        %添加色度条%
    subplot(3,3,5)
    imshow(I);title('RGB->灰度');
    colorbar
    subplot(3,3,6)
    imshow(BW);title('RGB->二进制');
    colorbar
    subplot(3,3,7)
    imshow(iRGB);title('索引->RGB');
    colorbar
    subplot(3,3,8)
    imshow(iI);title('索引->灰度');
    colorbar
    subplot(3,3,9)
    imshow(iBW);title('索引->二进制');
    colorbar
    subplot(3,3,2)
    imshow(x2,map2);
    title('灰度->索引');
    colorbar
    subplot(3,3,3)
    imshow(gBW);title('灰度->二进制');
    colorbar

    figure('Name','图像转换2')        % figure中存在多个颜色表不能正常显示 单独显示%
    subplot(3,3,4);
    imshow(X,MAP);
    title('RGB->128索引');
    colorbar

     

     

    图像格式示例:



    展开全文
  • [MATLAB]S函数

    千次阅读 2019-03-09 13:08:57
    使用M语言编写S-函数,使用模板来编写。 M文件主函数格式 %[sys,x0,str,ts]=f(t,x,u,flag,p1,p1,...)%f为函数名,与文件名相同 %sys是某个子函数的返回值,决也flag ...% [0 0]每个时间步都运行S-函数 % [-1 ...
  • 声发射b值参数的Matlab处理1. 声发射数据格式2. 在包含bvalue.m的文件夹下运行main.m,结果如下。其中第一列为时间(秒),第3列为b值。3. b值函数源代码 b值和熵值是声发射数据处理的特征参数,对表征声发射活动...
  • matlab神经网络30个案例分析

    千次下载 热门讨论 2011-06-01 20:06:07
    根据货运量影响因素的分析,分别国内生产总值(GDP),工业总产值,铁路运输线路长度,复线里程比重,公路运输线路长度,等级公路比重,铁路货车数量和民用载货汽车数量8项指标因素作为网络输入,以货运总量,铁路...
  • 按照该策略向(a,b)车位存入车辆,则运行时间 为: T(a ,b)=2×(max(a ν ,b ν )+t) 存取 k 次的总时间∑T 为: ∑T= m a = 1 ∑ n b = 1 ∑K(a,b)T(a,b) (2)原地待命的数学模型...
  • 3.3.5 mod/rem 模数/余数/81 3.4 图形相关函数/82 3.4.1 plot 绘制二维图像/82 3.4.2 坐标轴设置函数/83 3.4.3 subplot 同一窗口分区绘图/88 3.4.4 figure/hold 创建窗口/图形保持/88 3.4.5 semilogx/semilogy 单...
  • Matlab制作视频并转换成gif动态图的两种方法

    万次阅读 多人点赞 2017-03-08 22:13:50
    一、第一个方法比较简单,就是使用movie(f)直接生成AVI视频文件。...tic%记录程序运行时间 figure n = 0; t = -2*pi:0.01:2*pi; y = sin(t);%周期为2*pi y_result = sin(4*t); plot(t,y,'b')...
  • 新建一个.m文件,在文件中写下面所需的函数,后按F5运行程序,在保存图片,就可以在文档中...%aa(:,1)表示aa的第一列,仿真时间 %aa(:,2)表示aa的第二列,示波器的输入一 %aa(:,3)表示aa的第三列,示波器的...
  • Ross书上的式子为:下面用Matlab验证最终结果ΣPi,nn=2000进行验证,运行时间大概是两三分钟。代码主要思路是:先处理2&lt;i&lt;n-1的情况,代码中分别用一个for循环计算Σ,然后在[3,n-2]范围内求和,...
  • 2DPSK调制和差分解调的Matlab实现

    千次阅读 2019-12-08 15:25:29
    一早上的时间都用来写2DPSK调制和差分解调,ctrl一时爽,debug一早上。 我为啥会调一早上呢,主要是我以为2DPSK的调制解调应当和2PSK的是一样的,于是就把之前的2PSK的代码直接ctrl过来,只是中间增加了一个差分...
  • s=sprintf('程序运行需要约%.4f 秒钟时间,请稍等......',(eranum*popsize/1000)); disp(s); global m n NewPop children1 children2 VarNum bounds=[LB;UB]';bits=[];VarNum=size(bounds,1); precision=options(2)...
  • [Matlab][遗传算法][VRP]车辆路径规划问题VRP问题简介VRP问题数学模型VRP问题模拟结果通过图像处理的方式获得坐标遗传算法收敛图路径...代价函数根据问题不同而不同,常见的有车辆总运行时间最小,车辆总运行路径最短等
  • 因为我们已经提供了全部程序集的免费下载,而电子版的程序集,程序文本及其运行结果都是教师能够用MATLAB运行并在大屏幕上投影显示的。这比幻灯片更加生动,而且包括了操作过程,对学生学习更有指导意义。当然各位...
  • disp(['绘制工作空间运行时间:',num2str(etime(clock,t1))]); %获取X,Y,Z空间坐标范围 Point_range=[min(figure_x) max(figure_x) min(figure_y) max(figure_y) min(figure_z) max(figure_z)]; ```
  • 以下回答,只讨论科学计算的环境,matlab最出彩的地方是他的sim而不是calc从时间成本上回答你:先看结论:如果你的matlab足够熟练,你并不是从0开始学python,python科学计算的学习成本几乎为0(这完全决于你在...
  • 1 基于遗传算法的TSP算法(王辉) TSP (旅行商问题—Traveling Salesman Problem),是典型的NP完全问题,即其最坏情况下的时间复杂性随着问题规模的增大按指数方式增长,到目前为止不能找到一个多项式时间的有效算法...
  • 交叉率控制着交叉操作的频率,由于交叉操作是遗传算法中产生新个体的主要方法,所以交叉率通常应较大值,但若过大的话,又可能破坏群体的优良模式,一般0.4~0.99;变异率也是影响新个体产生的一个因素,变异率...
  • 流程控制结构 循环结构 for 循环结构 for i = v, loop program body, end ...测试程序运行时间可以用,tic、toc语句 条件转移结构 if (condition1) statement group 1 elseif (condition2) statement group 2 els
  • 目标函数:(由于四个季节内部运输情况一致,所以我们仅四个季节各一个航次求单舱日均利润) 变量及参数说明: P:均天单舱利润 TC:船舶最大载箱量 G,g:分别表示按季节因素分的时间段集合和在这个集合中的顺序 R:总...
  • 在写MATLAB的脚本的时候我时长会用tic、toc进行一下程序运行时间的测量。在Python中偶尔也会测试下,但是基本上都是靠使用time模块。接触了IPython之后突然间发现,原来程序执行时间的测试可以如此简单! 在IPython...
  • 一、InterValue开发进度 1、INVE主网:进行Dpos功能两节点场景测试,修复Dpos功能修改同步区块父亲id时,...讨论算法运行时间评估,算法日志传递,应用处理算法结果细节;编写第一版本的应用系统概要设计说明文档;.
  • 之前看过一篇文章,里面提到了按行遍历和按列遍历哪个快决于使用的语言类型,同时,在做深圳杯大作业的时候,通过查阅资料偶然发现了MATLAB中优化代码运行时间的其中一个方法是for循环要用按列遍历。下面用程序...
  • 基于内容的图像检索系统(总结)

    千次阅读 热门讨论 2019-04-02 22:03:17
    运行GenIndex.m保存颜色特征(提取颜色矩)和纹理特征(LBP方法来进行提 ); 运行main.m进行图像检索; 4.判定相似性:颜色矩和纹理特征向量的欧几里得距离,并给予不同的权值; 5.结果:返回最相似的15张图片; ...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

matlab取运行时间

matlab 订阅