看M代码系列(记录一些函数之类的)

2021/5/4 10:56:19

本文主要是介绍看M代码系列(记录一些函数之类的),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

读程序

  • fopen() 是将数据按指定格式读入到matlab中;
    fprintf() 是将数据按指定格式写入到文本文件中。
    定义函数 FILE * fopen(const char * path,const char * mode);
    函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有几种形态字符串:,其中rb+ 读写打开一个二进制文件,只允许读写数据。

  • format :设置输出格式
    用于针对数据的显示形式进行控制,但该命令不影响数据的储存形式和计算精度
    format long 15字长定点数

  • global x; 定义全局变量
    想让某个函数中定义的变量能够被其他函数调用,需要用到全局变量。注意,在这两个函数中都要用global修饰这个变量。

  • tic toc
    只要用tic和toc函数,不需要自己计算前后时间的差,tic函数会记录起始时刻,toc函数会自动计算时间差。

  • load peng.mat
    将peng.mat中的所有变量读入matlab工作空间中
    load函数,可以将数据读入到matlab的工作空间中

  • fscanf
    用于读取数据文件(.txt)中的数据,从保存的.txt文件中的第一个数据开始往下读,如果读取的数据不能将格式与数据匹配,它只读取数据的部分,然后停止处理。注意,输出结果是列优先。

  • fopen()
    数据按指定格式读入到matlab中的函数。

  • S=sparse(i,j,s,m,n,nzmax)
    由向量i,j,s生成一个m*n的含有nzmax个非零元素的稀疏矩阵S。
    具体的操作:依次取i,j中的值作为S的行标和列标,再在s中的值赋值到S中所对应的行标和列标。若S=sparse(i,j,s,m,n) ,此时的nzmax=length(s)。

  • cat:用于联结数组
    格式:
    C = cat(dim,A,B)
    C = cat(dim,A1,A2,A3,A4,…)
    dim = 1,将矩阵上下拼接,相当于[A; B];
    dim = 2,将矩阵左右拼接,相当于[A, B];
    dim = 3,构造三维数组。在新的矩阵中第1、2维就是A和B这两个矩阵的行数和列数,第3维是A和B这两个矩阵的矩阵个数,即为2。

  • repmat
    这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(MxN)的矩阵B中,B矩阵的大小由MxN及A矩阵的内容决定,如果A是一个3x4x5的矩阵,有B = repmat(A,2,3)则最后的矩阵是6x12x5

  • clock
    clock是一个获取系统当前时间的函数,是一个行向量。
    可以直接使用,也可以赋给某个变量名,
    比如date=clock;
    clock本身不带参数。元素依次是 年 月 日 时 分 秒。
    使用:
    time = clock;
    disp([num2str(time(1)),’/’,num2str(time(2)),’/’,num2str(time(3)),’ ‘,num2str(time(4)),’:’,num2str(time(5)),’:’,num2str(round(time(6)))])%显示当前时间
    结果:
    在这里插入图片描述
    -fprint disp
    显示函数。
    https://blog.csdn.net/mycsngao/article/details/38567849?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161706548216780357240193%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161706548216780357240193&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogbaidu_landing_v2~default-1-38567849.nonecase&utm_term=MATLAB+fprint+disp&spm=1018.2226.3001.4450

操作

可以先选中需要注释的行,然后按“ctrl+R”进行注释,

如果要取消多行注释,则在选中的基础上,按“ctrl+T”。

-NARGIN
函数输入参数的数目。
在用户定义函数的函数体中,NARGIN返回用于调用函数的输入参数的数目。如果函数使用参数验证块,那么这个数字中只包含函数调用提供的位置参数。不包括调用方未提供的可选参数。无论是否提供名称-值参数,都不会包括在内。
NARGIN(FUN)返回函数FUN声明的输入数。如果函数的输入参数数目可变,则参数数目为负。如果函数使用参数验证块,NARGIN将函数行上声明的位置参数的数量作为非负值返回。有趣的可以是映射到特定函数的函数句柄,也可以是包含该函数名称的字符向量或字符串标量。
参见NARGOUT, VARARGIN, NARGINCHK, INPUTNAME, MFILENAME。
版权所有1984-2019 MathWorks, Inc。
内置函数。

参考:https://blog.csdn.net/pitaya_lg/article/details/80907680
Matlab语言提供了两个函数nargin和varargin来控制输入变量的个数,以实现不定个数参数输入的操作:

nargin表示输入参数的个数

varargin做为函数定义的参数时,表示这个函数可以传递任意数量的参数

function y = bar(varargin), 调用bar这个函数,可以传递1个或2个或者不给参数

-linsolve 函数
参考:https://blog.csdn.net/u012927285/article/details/49640219Solve a linear system of equations
解决一个线性方程系统
语法
X = linsolve(A,B)
X = linsolve(A,B,opts)

X = linsolve(A,B)求解线性系统A*X = B,当A为方阵时,使用部分主元消元的LU分解,否则使用列枢轴的QR分解。A的列数必须等于B的行数必须有相同的行数。如果A是m × n B是n × k,那么X是m × k。如果a是方阵且处于病态状态,或者a不是方阵且秩不足,linsolve将返回一个警告。

[X, R] = linsolve(A,B)抑制了这些警告并返回R,如果A是方阵,R是A条件数的倒数,如果A不是方阵,R是A的秩。

linsolve(A,B,opts)求解线性系统A*X = B或A’*X = B,使用最合适的解算器,给定矩阵A的性质,这是你在opts中指定的。例如,如果A是上三角形,可以设置选项。UT = true使linsolve使用专为上三角矩阵设计的求解器。如果A在opts中具有这些属性,linsolve比mldivide更快,因为linsolve不执行任何测试来验证A是否具有指定的属性。

注意如果A没有您在opts中指定的属性,linsolve将返回不正确的结果,并且不会返回错误消息。如果您不确定A是否具有指定的属性,则使用mldivide代替。

opts结构的TRANSA字段指定了你想要求解的线性系统的形式:
如果你设置了选项opts.TRANSA = false,linsolve(A,B,opts)求解A*X = B
如果你设置了选项opts.TRANSA = true,linsolve(A,B,opts)求解A’*X = B。

下表列出了opts的所有字段及其对应的矩阵性质。opts的字段值必须是逻辑的,所有字段的默认值为false。
在这里插入图片描述
-MLDIVIDE
Backslash or left matrix divide.
% A\B is the matrix division of A into B, which is roughly the
% same as INV(A)B , except it is computed in a different way.
% If A is an N-by-N matrix and B is a column vector with N
% components, or a matrix with several such columns, then
% X = A\B is the solution to the equation A
X = B. A warning
% message is printed if A is badly scaled or nearly singular.
% A\EYE(SIZE(A)) produces the inverse of A.
% A\B是A除以B的矩阵,与INV(A)B大致相同,只是计算方法不同。如果A是一个N × N矩阵,而B是一个有N个分量的列向量,或者是一个有几个这样的列的矩阵,那么X = A\B是方程AX = B的解,如果A的比例过大或近似为单数,则会打印出警告信息。\EYE(SIZE(A))产生A的倒数。
% If A is an M-by-N matrix with M < or > N and B is a column
% vector with M components, or a matrix with several such columns,
% then X = A\B is the solution in the least squares sense to the
% under- or overdetermined system of equations A*X = B. The
% effective rank, K, of A is determined from the QR decomposition
% with pivoting. A solution X is computed which has at most K
% nonzero components per column. If K < N this will usually not
% be the same solution as PINV(A)B. A\EYE(SIZE(A)) produces a
% generalized inverse of A.
% 如果A是一个M × N矩阵,有M <或者>N和B是一个列向量组件,或一个矩阵等一些列,那么X = a \ B是在最小二乘意义上的解决方案下,或超定方程组A
X = B .有效秩K,确定的QR分解与旋转。解X每列最多有K个非零分量。如果K<N,这通常不是与PINV(A)*B相同的解。A\EYE(SIZE(A))产生A的广义逆。
% C = MLDIVIDE(A,B) is called for the syntax ‘A \ B’ when A or B is an object.
% 当A或B是一个对象时,C = MLDIVIDE(A,B)被语法’A \ B’调用。
% See also LDIVIDE, RDIVIDE, MRDIVIDE.

% Copyright 1984-2008 The MathWorks, Inc.



这篇关于看M代码系列(记录一些函数之类的)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程