1.Overload your functions by having variable number of input and output argumernt.Not only can we overload functions also operators.

我们可以通过不同的输入输出来重载函数,当然我们还可以重载运算符。一般来说,运算符重载只在OOP中使用到。(see varargin,varargout,nargin,nargout)

varargin :

Allows any number of arguments to a function. The variable varargin is a cell array containing the optional arguments to the function. varargin must be declared as the last input argument and collects all the inputs from that point onwards. In the declaration, varargin must be lowercase (i.e., varargin).

允许函数输入任意数量的参数,varargin实际上是一个cell,包含着函数的可选参数。varargin参数必须在参数列表的最右面,在声明时,varargin必须小写!

For example, the function,

例如,函数:

function myplot(x,varargin)
plot(x,varargin{:})

  

collects all the inputs starting with the second input into the variable "varargin". MYPLOT uses the comma-separated list syntax varargin{:} to pass the optional parameters to plot.

这个函数把从第二个输入的参数全部收集进变量"varargin"

The call,

>> myplot(sin(0:.1:1),'color',[.5 .7 .3],'linestyle',':')

results in varargin being a 1-by-4 cell array containing the
values 'color', [.5 .7 .3], 'linestyle', and ':'.

varargout:ariable length output argument list.

Allows any number of output arguments from a function. The variable varargout is a cell array containing the optional output arguments from the function. varargout must be declared as the last output argument and must contain all the outputs after that point onwards. In the declaration, varargout must be lowercase (i.e., varargout).

允许函数任意数量的输出,varargout和varargin的数据类型一样,是一个cell,包含了函数的可选的任意输出,同样varargout也必须是在输出的左后一个参数,在声明时,varargout必须小写!

varargout is not initialized when the function is invoked. You must create it before your function returns. Use NARGOUT to determine the number of outputs to produce.

varargout直至函数被调用时才被初始化,你必须在你的函数返回前创造他,使用NARGOUT来决定要产生的输出(总)的数目。

For example, the function,
例:

function [s,varargout] = mysize(x)
nout = max(nargout,1)-1;
s = size(x);
for i=1:nout, varargout(i) = {s(i)};
%提前创造varargin(remember varargout is a cell) end

  

returns the size vector and optionally individual sizes. So,

>>[s,rows,cols] = mysize(rand(4,5));

>> s = [4 5], rows = 4, cols = 5.

2.Visualizing matrices 的几个函数

a.colormap    b.surf    c.contour   d.colorbar    e.imagesc

(all thiese are built-inn functions)

3.计算程序运行的时间;

tic ....toc1...toc2...此外还有for more complicated situation >>profile on;>>profile viewer

4.MATLAB 格式化输出

fprintf :write formatted data to text file.将格式化数据写入文本文档。

fprintf(FID, FORMAT, A, ...) applies the FORMAT to all elements of array A and any additional array arguments in column order, and writes the data to a text file. FID is an integer file identifier. Obtain FID from FOPEN, or set it to 1 (for standard output, the screen) or 2(standard error). fprintf uses the encoding scheme specified in the call to FOPEN.

将FORMAT应用到A的所有元素中和其他附加的以列为顺序的参数,然后将这些数据写到一个文本文档,FID是一个文件的辨识符,从fopen中国获得fid,或者将其设置为1(标准输出到屏幕上)或者2 (标准错误)。

fprintf(FORMAT, A, ...) formats data and displays the results on the screen.

格式化数据并将其输出到屏幕上。

COUNT = fprintf(...) returns the number of bytes that fprintf writes.

计算fprintf写了多少字节。

FORMAT is a string that describes the format of the output fields, and can include combinations of the following:

FORMAT是一个字符串,它描述输出的格式:

* Conversion specifications, which include a % character, a conversion character (such as d, i, o, u, x, f, e, g, c, or s), and optional flags, width, and precision fields. For more details, type "doc fprintf" at the command prompt.

* Literal text to print.

* Escape characters, including:
\b Backspace '' Single quotation mark
\f Form feed %% Percent character
\n New line \\ Backslash
\r Carriage return \xN Hexadecimal number N
\t Horizontal tab \N Octal number N
For most cases, \n is sufficient for a single line break.
However, if you are creating a file for use with Microsoft
Notepad, specify a combination of \r\n to move to a new line.

Notes:

If you apply an integer or string conversion to a numeric value that contains a fraction, MATLAB overrides the specified conversion, and uses %e.

Numeric conversions print only the real component of complex numbers.Example: Create a text file called exp.txt containing a short table of the exponential function.

x = 0:.1:1;
y = [x; exp(x)];
fid = fopen('exp.txt','w');
fprintf(fid,'%6.2f %12.8f\n',y);
fclose(fid);

Examine the contents of exp.txt:

type exp.txt

MATLAB returns:
0.00 1.00000000
0.10 1.10517092
...
1.00 2.71828183

sprintf:仅格式化并不输出,声明同fprintf。

5.多样化的MATLAB(Miscellaneous MATLAB)

几个关键字:deal,eval, repmat

一个表达式:regular expression

6.使用cell和struct的几个注意事项

注意cell的索引方式。cell使用前一般提前声明和prelocation.

另;struct一般不提前声明。看下列代码:

a = struct;
a(1).name = 'Leee';
a(1).age = 25;
a(2).name = 'bbb';
a(2).age = 32;
%或者声明+初始化
b = struct('name',{'lee','faker'},'age',{25,34});

 初始化+声明同步进行时,key-valu的value应该用{ },但如果西先声明后赋值的化依旧使用{ } ,就会给出现这种情况:

a = struct;
a.name = {'Leee','bbbb'};
a.age ={25,32};

  

我们还可以通过使用deal对struct进行批量化的赋值:

a =struct;
cc = {'x',1,2,3,4};
for i=1:5
a(i).name = deal('x');
a(i).age = deal(10);
end

以下代码会创建一个Vector

ageVec = [a.age];

  则输出如下:

7.OOP

谈到OOP,必须讲到的封装,继承,多态。

先给出一个定义matlab中类的典型代码:

%class contact
classdef contact
properties%默认属性为public
name
phonenumber
end
properties(SetAccess = private)%私有属性,还可以设置读取的属性GetAccess
gender
end
methods
function obj = contact(m_name,m_phonenumber,m_gender)
obj.name=m_name;
obj.phonenumber = num2str(m_phonenumber);
obj.gender = m_gender;
end
function disp(obj)
fprintf('%s is %s, phonenumber is %s\n',obj.name,...
obj.gender,obj.phonenumber)
end
end
end

  第一个方法时类的构造函数,第二个方法我们重载了函数disp.

8.Linked List

Matlab学习过程中的一些小问题的更多相关文章

  1. Vue实例学习过程中碰到的小问题

    在使用插值表达式{{  }}取data中list数组中的值时把整个表达式当做文本显示了,原因不明,但是使用v-text替换插值表达式之后问题得到解决. 原因已经查明,因为第78行,定义对象car时后面 ...

  2. 记录python学习过程中的一些小心得

    1.python中一切皆对象,内置数据结构也是对象.处理一个对象就是利用它带有的方法和属性,对该对象进行处理,一步步达到我们想要的结果. 2.编程时,先构思好我们处理的对象是什么,具有哪些属性和方法, ...

  3. JS学习过程中碰到的小问题

    使用循环语句查找通讯录 //Setup var contacts = [ { "firstName": "Akira", "lastName" ...

  4. Java学习过程中的总结的小知识点(长期更新)

    Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...

  5. Matlab中的一些小技巧

    (转于它处,仅供参考) 1.. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来中断.MATLAB这时可能正疲于应付,响应会有些滞后. ...

  6. MATLAB坐标系中绘制图片

    MATLAB坐标系中绘制图片 方法一 使用图片坐标循环的方式,代码如下. clear,clc,close all tic; map=imbinarize(imread('map.bmp'));%map ...

  7. 关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)

    关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议) 前言:最近在学习JDBC,总结了几个小问题,特地分享给大家,让大家不要犯这样的错误,也希望大家养成学会总结的 ...

  8. Mybatis 学习过程中出现空指针异常的错误【已解决】

    Mybatis 学习过程中出现空指针异常的错误[已解决] 以下是写的小测试的代码 bean层 Player类(篮球队队员) bean层 Team类(篮球队) dao层 TeamDao.xml配置文件 ...

  9. 一些JavaSE学习过程中的思路整理(主观性强,持续更新中...)

    目录 一些JavaSE学习过程中的思路整理(主观性强,持续更新中...) Java书写规范 IDEA的一些常用快捷键 Java类中作为成员变量的类 Java源文件中只能有一个public类 Java中 ...

随机推荐

  1. jQuery对html元素的取值与赋值实例详解

    jQuery对html元素的取值与赋值实例详解 转载  2015-12-18   作者:欢欢   我要评论 这篇文章主要介绍了jQuery对html元素的取值与赋值,较为详细的分析了jQuery针对常 ...

  2. 随机线性网络编码的C语言实现,实现可靠传输:实现篇(2)

    伽罗华域(2^8)乘除法的编程实现

  3. PyTorch中view的用法

    相当于numpy中resize()的功能,但是用法可能不太一样. 我的理解是: 把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其 ...

  4. Layout 实现三栏布局的几种方法

    https://github.com/ljianshu/Blog/issues/14    布局参考 https://github.com/ljianshu/Blog/issues/38  响应式那点 ...

  5. Python--day38---进程间通信--初识队列(multiprocess.Queue)

    初识队列: 进程间通信IPC(Inter-Process Communication) 1,队列的方法: q = Queue(5)1,q.put(1) #把1放进队列 2,print(q.full() ...

  6. MySQL中Index Merge简介

    索引合并优化 官网翻译 MySQL5.7文档 索引合并是为了减少几个范围(type中的range类型:range can be used when a key column is compared t ...

  7. There is no PasswordEncoder mapped for the id "null"的解决办法

    今日在SpringBoot项目中使用 Spring Security ,登录时发现报500错,报错信息如下: There is no PasswordEncoder mapped for the id ...

  8. NetBIOS 计算机名称命名限制

    本文告诉大家对于 NetBIOS 的命名的限制 长度限制 最小长度是 1 最长长度是 15 因为默认是 16 字符,但是微软使用最后一个字符作为后缀 可以使用的字符 可以使用英文和数字 abcdefg ...

  9. ioctl 命令的实现

    ioctl 的 scull 实现只传递设备的配置参数, 并且象下面这样容易: switch(cmd) { case SCULL_IOCRESET: scull_quantum = SCULL_QUAN ...

  10. linux I/O 端口分配

    如同你可能希望的, 你不应当离开并开始抨击 I/O 端口而没有首先确认你对这些端口有 唯一的权限. 内核提供了一个注册接口以允许你的驱动来声明它需要的端口. 这个接口中 的核心的函数是 request ...