精华内容
下载资源
问答
  • MatlabMatlab中常用的函数、案例详细攻略目录常用函数1、与文件相关2、MATLAB GUI不同控件函数间变量传递方法常用函数Matlabbwmorph函数解释 bwmorph:对二值图像形态学操作。 BW2 = bwmorph(BW,operation) ...

    Matlab:Matlab中常用的函数、案例详细攻略

    目录

    常用函数

    1、与文件相关

    2、MATLAB GUI不同控件函数间变量传递方法


    常用函数

    Matlab中的bwmorph函数解释
    bwmorph:对二值图像的形态学操作。
    BW2 = bwmorph(BW,operation)
    BW2 =bwmorph(BW,operation,n)
    BW2 = bwmorph(BW,operation)对二值图像应用形态学操作。
    BW2 = bwmorph(BW,operation,n)应用形态学操作n次,n可以是Inf,这种情况下该操作被重复执行直到图像不再发生变化为止。
    
    Operation是以下的字符串:
    Operation Description
    'bothat'是形态学上的“底帽”变换操作,返回的图像是原图减去形态学闭操作处理后的图像(闭操作:先膨胀再腐蚀)
    'bridge'连接断开的像素。也就是将0值像素置1如果他有两个非零的不相连(8邻域)的像素,比如:
    1 0 0                                            1 1 0
    1 0 1   经过bridge连接后变为  1 1 1
    0 0 1                               0 1 1
    'clean'
    移除孤立的像素(被0包围的1)。比如下面这个模型的中心像素:
                  0 0 0
                  0 1 0
                  0 0 0
    'close'执行形态学闭操作(先膨胀后腐蚀)
    'diag'
    利用对角线填充来消除背景中的8连通区域。比如:
    0 1 0                                 1 1 0
    1 0 0      经过diag变成   1 1 0
    0 0 0                                 0 0 0
    'dilate'利用结构ones(3)执行膨胀操作。
    'erode'利用结构ones(3)执行腐蚀操作。
    'fill'
    填充孤立的内部像素(被1包围的0),比如下面模型的中心像素:
                    1 1 1
                    1 0 1
                    1 1 1
    'hbreak'移除H连通的像素,例如:
    1 1 1                          1 1 1
    0 1 0            变成          0 0 0
    1 1 1                          1 1 1
    'majority'将某一像素置1如果该像素的3×3邻域中至少有5个像素为1;否则将该像素置0
    'open'执行形态学开操作(先腐蚀后膨胀)
    'remove'移除内部像素。该选项将一像素置0如果该像素的4连通邻域都为1,仅留下边缘像素。
    'shrink'n = Inf时,将目标缩成一个点。没有孔洞的目标缩成一个点,有孔洞的目标缩成一个连通环。
    'skel'n = Inf时,移除目标边界像素,但是不允许目标分隔开,保留下来的像素组合成图像的骨架。
    'spur'移除刺激(孤立)像素。比如:
    0  0  0  0                   0  0  0  0
    0  0  0  0                   0  0  0  0
    0  0  1  0    变成       0  0  0  0
    0  1  0  0                   0  1  0  0
    1  1  0  0                   1  1  0  0
    'thicken'n = Inf时,通过在目标外部增加像素加厚目标直到这样做最终使先前未连接目标成为8连通域。
    'thin'n = Inf时,减薄目标成线。没有孔洞的目标缩成最低限度的连通边;有孔洞的目标缩成连通环。
    'tophat'执行形态学“顶帽”变换操作,返回的图像是原图减去形态学开操作处理之后的图像(开操作:先腐蚀再膨胀)。

    dfd37775cfd94082ca689e7348d9ff7e.png

    bw = bwareaopen(bw, threshold) %函数作用是删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域

    dfd37775cfd94082ca689e7348d9ff7e.png

    1、与文件相关

    [FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)%该函数是创建标准的对话框并通过交互式操作取得文件名 FileName:返回的文件名 PathName:返回的文件的路径名 FilterIndex:选择的文件类型 FilterSpec:文件类型设置 DialogTitle:打开对话框的标题 DefaultName:默认指向的文件名

    dfd37775cfd94082ca689e7348d9ff7e.png

    2、MATLAB GUI不同控件函数间变量传递方法

    在GUI中一个控件函数结束后,会将在这个函数中使用的变量全部删除,如果想在另一个控件中使用,则必须想办法将这个变量保存传递,方法有以下几种:

    T1、使用globe定义全局变量

    这种方法不是很好,一方面是要在使用变量的函数里面要先对变量进行声明,另一方面,在一个函数里面对变量进行操作就会对所有函数起作用,这样不是太方便,但毕竟是一种解决方法。
    function btn1_callback(hObject,userdata,handles)
    global var1
    %对var1的处理
    function btn2_callback(hObject,userdata,handles)
    global var1
    %对var1的引用T2、使用guidata函数

    使用方法是:
    handles.X=str2double(get(hObject,'String'));
    guidata(hObject,handles);
    在别的函数中只要使用handles.X就可以得到str2double(get(hObject,'String'))数值。
    这种方法的好处是,在改变了控件的Tag后,方便使用相应控件传递来的数据,缺点是要改变控件的句柄handles值,这样似乎不是很安全。T3、使用空间的userdata属性保存数据

    使用方法如下:
    set(handles.X,'userdata',a);
    这里a就是要传递的变量,现在暂时保存在这个控件的userdata中,需要取出时:
    a=get(handles.X,'userdata');
    即可将a传递到新函数中,如果要传递的是多个变量,可以使用结构数组进行传递
    这种方法是最安全且自由度高的传递犯法,推荐!!!

    展开全文
  • Matlab函数定义方法Matlab自定义函数的六种方法n1、函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件;n2、函数文件+子函数:定义一个具有多个自定义函数的M文件;n3、Inline:无需M文件,直接定义;...

    Matlab中函数定义方法

    Matlab自定义函数的六种方法

    n1、函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件;

    n2、函数文件+子函数:定义一个具有多个自定义函数的M文件;

    n3、Inline:无需M文件,直接定义;

    n4、匿名函数;

    n5、Syms+subs:无需M文件,直接定义;

    n6、字符串+subs:无需M文件,直接定义。

    ------------

    1、函数文件+调用函数文件:定义多个M文件

    % 调用函数文件:myfile.m

    clear

    clc

    for t=1:10

    y=mylfg(t);

    fprintf(‘M^(1/3)=%6.4f\n’,t,y);

    end

    %自定义函数文件:

    mylfg.m

    function y=mylfg(x) %注意:函数名(mylfg)必须与文件名(mylfg.m)一致

    Y=x^(1/3);

    注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。

    2、函数文件+子函数:定义一个具有多个子函数的M文件

    %命令文件:funtry2.m

    function []=funtry2()

    for t=1:10

    y=lfg2(t)

    fprintf(‘M^(1/3)=%6.4f\n’);

    End

    function y=lfg2(x)

    Y= x^(1/3);

    %注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。

    注意:函数定义格式

    在matlab中应该做成M文件,文件名要和你文件里的function后面的函数名一致,在File新建一个M-file在M-file里编辑函数,其格式为:

    function [输出实参表]=函数名(输入实参数)

    注释部分

    函数体语句

    return语句(可以有可以没有)

    如果是文件中的子函数,则可以任意取名,也可以在同一个文件中定义多个子函数:

    例:function [max,min]=mymainfun(x)  %主函数

    n=length(x);

    max=mysubfun1(x,n);

    min=mysubfun2(x);

    function r=mysubfun1(x,n)  %子函数1

    x1=sort(x);

    r=x1(n);

    function r=mysubfun2(x)  %子函数2

    x1=sort(x);

    r=x1(1);

    详细见后文:matlab中同一文件定义子函数的方法

    【说明】可以将一个主函数和多个子函数写在一个m文件中,文件名是主函数名,第一个函数是主函数,后面跟的函数都是这个函数中需要调用的子函数或者子子函数。即该文件必须是以function打头的函数文件,不能是前面不是函数,后面跟一串函数。强调一下,前面是命令后面加函数是不行的,必须前面也是函数!前面无参数输入的而是一段命令,直接将这些命令定义为一个无参数的函数就可以了。

    3、Inline:无需M文件,直接定义

    %inline命令用来定义一个内联函数:f=inline(‘函数表达式’,

    ‘变量1’,’变量2’,……)。

    调用方式:y=f(数值列表)

    %注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。

    例如:

    f=inline(‘x^2+y’,’x’,’y’);

    z=f(2,3)

    Ans=7

    注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。

    例:

    Clear

    Clc

    f=’x^2’;

    Syms x g;

    g=x^2;

    h=inline(‘x^2’,’x’);

    4. 匿名函数

    使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。例如:

    >>x=-pi:0.1:pi;

    >>

    fh={@cos,@sin};

    fh =

    @cos @sin

    >>plot(fh{2}(x))

    5、Syms+subs:

    无需M文件,直接定义

    用syms定义一个符号表达式,用subs调用:

    Syms f x

    %定义符号

    f=1/(1+x^2);

    %定义符号表达式

    subs(f,

    ‘x’,代替x的数值或符号)

    注:对于在syms中已经定义过的符号变量,在subs中进行替代时,单引号可以省略。但是,如果在syms后又被重新定义为其他类型,则必须加单引号,否则不可替换。

    这种函数定义方法的特点是,可以用符号进行替换

    Syms f x

    f=1/(1+x^2);

    subs(f,

    ‘x’,’y^2’)

    ans=

    1/(1+(y^2)^2)

    注:该方法的缺点是,由于使用符号运算内核,运算速度会大大降低。

    6、字符串+subs:无需M文件,直接定义

    直接定义一个字符串,用subs命令调用。例如:

    f=’1/(1+x^2)’

    %定义字符串

    z=subs(f,’x’,2)

    g=subs(f,’x’,’y^2’)

    注:优点是,占用内存最少,定义格式方面自由。

    缺点是,无法对字符进行符号转化。

    当所要替代的符号在调用前都已经有了数值定义,则可以直接调用:subs(f).例如:

    f=’x^2*y’;

    x=2;y=3;

    subs(f)

    ans=12

    -------------------------------------------

    详细:Matlab中同一文件定义子函数的方法

    有时子函数可能很短,就几行,可能希望将多个函数定义放在同一个.m文件中,这里就存在一个子函数的定义问题。

    在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且M文件名必须和主函数相同

    在一个m文件中通常有两种定义子函数的方法:

    1.嵌套定义

    function mainFunc()

    ...

    a = myfunc1();

    ...

    function myfunc1()

    ...

    end

    end

    2.非嵌套定义

    function mainFunc()

    ...

    a = myfunc1();

    ...

    end

    function myfunc1()

    ...

    end

    在第二种情况中,myfunc1和主函数就是两个独立的函数,和把它们写在两个独立的文件

    中没有差别。变量名想怎么起怎么起,不会有任何冲突。

    而第一种情况中,myfunc1会和主函数共享变量名。这种情况下,使用相同的变量名,如

    果不是故意为之,就不合适了。

    对于嵌套函数,函数定义中的end必不可少。

    例子:

    下面是某个.m脚本文件(son_function.m文件)中的内容:

    %

    %-----------------------------------------------------------------------

    function son_function(

    ) %主函数必须位于最上方

    %子函数举例

    max1=find_max(1,2,3)

    max2=find_max(7,3,9)

    function

    max=find_max(a,b,c) %子函数

    if

    (a>=b)&(a>=c)

    max=a;

    elseif

    (b>=a)&(b>=c)

    max=b;

    else

    max=c;

    end

    %

    %-----------------------------------------------------------------------

    注意:

    M文件中将函数的调用直接写到m脚本文件中的情况是不允许的,必须也把调用写成函数的形式,或者将子函数都写成单独的m文件。

    如将上程序中的第一行屏蔽掉,即

    % function son_function(

    )

    会出现下面的错误

    Function

    definitions are not permitted at the prompt or in

    scripts.

    ---------------------------------

    下面一段文字是摘自matlab帮助中的一段文字:end在function中的使用

    end

    also marks the termination of an M-file

    function, although in most cases, it is optional. end statements

    are required only in M-files that employ one or more nested

    functions. Within such an M-file, every function (including

    primary, nested, private, and subfunctions) must be terminated with

    an end statement. You can terminate any function type with end, but

    doing so is not required unless the M-file contains a nested

    function

    尽管大多数情况下,end在function的用法是可选的,但也可以用它标记一个M文件函数的结束。end语句仅在使用一个或多个嵌套函数的情况下才是要求的。在诸如此类嵌套函数的M-文件中,每一个函数(包括主调函数,嵌套函数,私有函数和子函数)必须以一个end语句来结束。可以使用end结束任一函数类型,但这样做除了M-文件包含一个嵌套函数其他情况并非必要的。

    展开全文
  • 第一次用到matlab的save函数,简单的看了一下help之后写下这样的代码 save('label',label); 原意是想将变量label存在当前目录下的label.mat中,但是就出现了这样的错误。 Error using save Argument must contain...
    第一次用到matlab的save函数,简单的看了一下help之后写下这样的代码

    save('label',label);

    原意是想将变量label存在当前目录下的label.mat中,但是就出现了这样的错误。

    Error using save
    Argument must contain a string.

    Error in generateLabel (line 38) 
    save('label',label);

    重读help,发现是save(filename,variables)中的variables表示的是Descriptionof the variables tosave,也就是一个用来描述变量名的字符串,并不是一个变量。因此,应将语句写为

    save('label','label');

    此外,还可以使用通配符‘*’和格式匹配
    比如'A*'可以保存所有A开头的变量至指定的mat文件中
    或使用

    '-regexp',expressions

    来保存指定的expression的变量。

         matlab help文件

     
    展开全文
  • matlab eval函数有关string的使用

    千次阅读 2014-09-03 21:00:56
    eval函数是一个比较神奇的函数,也较为hao

    本文地址:http://blog.csdn.net/greenchina1992/article/details/39032775 转载请注明出处


       eval函数是一个比较神奇的函数,也较为好用,主要可以将字符串变换成命令执行,在需要动态生成或使用变量名时,非常好用,具体用法可help eval或者谷歌之。

       简单用法如下:

       

    for i = 1:10
        eval(['a = ', num2str(i), ';']);        %中括号将中间的句子组成一个字符串
    end

      这个语句等同于:

    for i = 1:10
        a = i;
    end

      如果需要动态生成变量名的话,eval函数是非常好用的:

    for i = 1:10
      eval(['node', num2str(i), '=', num2str(2*i), ';']);
    end

    以上代码等同于:

    node1 = 2*1;
    node2 = 2*2;
    .
    .
    .
    node10 = 2*10;


    eval函数有关string的使用:

    node1 = '123123';
    a = 'node1';

    如果遇到以上语句,我想执行第二条,如果直接使用:

    eval('a = node1')

    则a的值将变为'123123';而并不是我们想要的'node1',如果需要a是字符串的话,则可以如下执行:

    str = 'node1';
    eval('a = str');

    先将字符串赋值给一个变量即可,虽然并不难,但目前没看到网上有提到该方法,希望能帮到有需要的朋友。






    展开全文
  • 本文档详细给出了Matlab中legend函数的使用方法...Legend函数的基本用法:Legend(string1,string2,string3,┈)分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应图标为画图时图标。例如:plot(x,s...
  • matlab中eval函数的用法

    2020-01-08 14:13:44
    毕设使用的函数,记录一下方便回忆 eval函数将字符串转换为matlab可执行语句 help eval eval Execute string with MATLAB expression. eval(EXPRESSION) evaluates the MATLAB code in the string EXPRESSION. ...
  • 函数描述char(S1,S2,„)利用给定字符串或单元数组创建字符数组double(S)将字符串转化成ASC码形式cellstr(S)利用给定字符数组创建字符串单元数组blanks(n)生成一个由n个空格组成字符串deblank(S)删除尾部...
  • matlab中legend函数的用法

    万次阅读 2018-12-19 16:34:28
    简要介绍: ...legend 是matlab中用于设置图例线条和patches的函数,例如下图右上角上线条和字幕设置等等。 函数使用方法: legend('string1','string2',...)  legend(h,'string1','string2',...
  • matlab中dir函数以及sort函数的用法

    万次阅读 2017-04-19 19:41:14
    dir函数的作用:返回当前路径中所有文件以及文件夹所组成列表。 dir %returns a list of files and folders in the current folder.类似于Dos命令中DIR dir name (或者 dir(name)) %returns a list of ...
  • Matlab中,想要将两个字符串连接在一起,有以下方法:假定有两个字符串str1=’I love you’;str2=’123’;方法一:用中括号将str1和str2像矩阵元素一样包含起来:SC=[str1,str2]SC =Iloveyou123若想验证str1和...
  • MATLAB中eval函数使用

    2019-12-18 15:09:31
    help eval 将看到matlab自带说明 eval Execute string with MATLAB expression. eval(s), where s is a string, caus es MATLAB to execute the string as...翻译一下,就是说eval函数的功能是将字符串转换为matla...
  • MATLAB-legend函数

    2020-11-25 10:50:05
    Matlab画图时,有时候需要对各种图标进行标注,例如,用“+”代表A运动情况,“*”代表B运动情况。 legend函数的基本用法是: LEGEND(string1,string2,string3, …) 分别将字符串1、字符串2、字符串3……标注...
  • 假定有两个字符串>> str1='Iloveyou';... ab=[str1,str2]abIloveyou123(若想验证str1和str2确实被连接起来,可调用length函数测试SC长度。)方法二:用strcat函数>> ac=strcat(str1,str2)ac=Il...
  • matlab中disp函数的简单用法

    千次阅读 2019-09-25 13:23:15
    输出数组类型数据,也可以把string类型数据看做数组输出 输出数字 >> num = 1; >> disp(num) 1 输出字符串 >> disp('this is string') this is string >> ...
  • MATLAB中字符串和其他数据类型有关matlab数据类型Matlab中有15种基本数据类型:主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。1、整型:(int8;uint8;int16;uint16;int32...
  • 通过指定分隔符对字符串进行切片,并返回分割后字符串列表(list)os.path.split():按照路径将文件名和路径分割开一、函数说明1、split()函数语法:str.split(str="",num=string.count(str))[n]参数说明:str:...
  • matlab eval函数的使用

    千次阅读 2018-02-13 14:54:16
    help eval 将看到matlab自带说明 eval Execute string with MATLAB expression. eval(s), where s is a string, caus es MATLAB to execute the ... 翻译一下,就是说eval函数的功能是将字符串转换为matlab可执...
  • 根据变量创建字符串数组MATLAB®...str = "Hello, world"str ="Hello, world"作为备选方法,您可以使用 string 函数将字符向量转换为字符串。chr 为一个 1×17 字符向量。str 为一个与该字符向量具有相同文本 1×1...
  • Matlab中legend函数

    2017-10-13 16:59:00
    1.legend('string1','string2',…)用指定文字string在当前坐标轴中对所给数据每一部分显示一个图例。 2.legend(h,'string1','string2',…)用指定文字string在一个包含于句柄向量h中图形显示图例。用给定...
  • 郁闷了,测试一段很简单程序,就是上面这样错误,代码如下: proFileName = 'TheChVector'; pixName = '.mat';  strNum = num2str(seperateNum);  saveFile = strcat(proFileName, strNum,pixName); ...
  • help eval 将看到matlab自带说明 eval Execute string with ...翻译一下,就是说eval函数的功能是将字符串转换为matlab可执行语句。通俗而言,比如 你输入 a=’b=1’; 会在workspace里看见生成了变量a,a类型...
  • MATLAB中plot函数的LineSpec参数

    千次阅读 2015-01-07 22:12:44
    Line style, marker symbol, and color, specified as a string. The elements of the string can appear in any order, and you can omit one or more options from the string specifier. If you omit the line st
  • 函数text是创建text图形句柄低级函数。可用该函数在图形中指定位置上显示字符串。 用法 text(x,y,'string')在图形中指定位置(x,y)上显示字符串string text(x,y,z,'string') 在三维图形空间中指定位置(x,y,...
  • text(x,y,'string')在图形中指定位置(x,y)上显示字符串string.text(x,y,z,’string’.'PropertyName',PropertyValue„)对引号中文字string定位于用坐标轴指定位置,且对指定 属性进行设置。例:>> x =...
  • matlab sprintf函数的用法

    千次阅读 2020-05-25 22:36:38
    %数值格式化输出 ...str1=sprintf(string('pi = %.5f'),pi); %输出类型为string team1='Manchester United'; team2='Chelsea'; str2=sprintf('%s won %s,congratulations',team1,team2); 输出 >>
  • 写一个Matlab函数 function ret = myeval(str)计算表达式str值。 str是一个算术表达式,即输入字符串表达式,输出表达式计算结果。
  • access函数与mkdir函数这两个函数在往本地存储数据创建新文件夹时用到std::string file_path1 = "./image_data/front_middle/" + std::to_string(time_stamp_) + ".jpg";if(access(file_path1,0)==-1) // this dir...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 255
精华内容 102
关键字:

matlab的string函数

matlab 订阅