1. 函数

1.1 原始方法

之前我调用函数的方法是,首先写好函数文件,然后保存,然后在主函数中调用。这种方法的不足在于会导致你的工作目录的文件太多,从而导致很乱。在网上找了一些解决方法。

1.2 本地函数

能否像C语言那样直接在一个文件中定义各种函数然后调用呢?原来在Matlab2016b版本之后就加入了一个本地函数的定义。

clc;
clear all;
f=linspace(1,100,100);
kk = b_Vale(f);
%本地函数的定义 可以定义多个 但是注意不要和文件名一样
function kk=b_Vale(f)
kk = zeros(size(f,2),1);
for i =1:size(f,2)
for j=1:size(f,2)
if(f(j)>f(i))
kk(i)=kk(i)+1;
end
end
end
end

  

这个代码就有种C语言的感觉了,现在终于可以自由的定义函数了。

1.3 内联函数

对于一些很简单的函数,完全都不用定义function这种,定义内联函数inline,内联函数另一个作用是可以提高运行速度。
inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。
调用方式:y=f(数值列表) %注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。
举个例子:

f=inline('x^2+y','x','y');
z=f(2,3)
Ans=7

  

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

1.4 直接通过@符号定义

举个例子:

>>f=@(x,y)(x.^2-sin(y))
f = @(x,y)(x.^2-sin(y))
>>f(2,3)
ans =3.8589

  

1.5 对于字符型的函数有subs方法

举个例子:

syms f xf=1/(1+x^2);
subs(f, 'x','y^2')
ans= 1/(1+y^4)

  

1.6 本地函数的深入理解

在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且**M文件名必须和主函数相同** 在一个m文件中通常有两种定义子函数的方法:
举例子:
(1)非嵌套

function mainFunc().
..
a = myfunc1();
...
end function
myfunc1()
...end

  

(2)嵌套

function mainFunc()
...
a = myfunc1();
...
function myfunc1()
...
end
end

  

要注意,一定要把主函数卸载第一行,而且名字一定要和文件名相同。

1.7 普通方法

新建脚本保存为111.m再新建脚本 就可以在这个目录下调用111.m函数了。这个是最好理解的方法。

1.8 常用技巧

技巧:可以尝试加断点 然后在选中一段代码右键点击运行这一段,来检验这一段函数的运行情况。

也可以用%{和%}注释一个代码块|还有用if 0 -end注释。

计算运行时间方法

(1) tic和toc组合 最近原则显示组合的时间

(2)t1=clock;

t2=clock;

etime(t2,t1)

MATLAB类型转换

数据类型:

int和unit都是整型,只是前一个有符号,后一个没有符号,比如在16位系统中,int范围是-32768-32767,unit范围是0-65535;

single和double都是浮点型(单精度、双精度),只是single最多可以显示小数点后7位,double最多可以显示小数点后14位;single变量存储大小位32位(4个字节),double变量存储大小为64位(8个字节);

logical是逻辑数据类型,有0和1两种;

cell array元胞数组类型,数组元素可以是不同的数据类型;

structure为结构体类型,与C语言的结构体类似,例创建一个station结构体,有两种方式,一是通过‘结构体名称.字段名称’进行创建和赋值,ctation.name='s';station.x=100;station.y=120;二是通过struct创建结构体,station=struct('name',{s},'x',{100},'y',{120});

char为字符串类型;例如‘Hello,world!’

转换:

例1:将浮点数128.4转换为整数:

a=int8(128.4)=127,高位溢出,因为128.4超出了int8的范围(-128~127),需要用a=int16(128.4)=128。

a=round(128.4)=128,round()函数为取整函数,小数部分小于0.5则舍去,即四舍五入。

a=fix(128.4)=128,fix()函数为向0取整函数,a=fix(-128.6)=-128。

Matlab批量读取文件夹下的文件

比如说在来E:\new下有一系列txt文件,文件名符合matlab变量名的命名规则,并且没有temp.txt文件,每个文件有两列,以空格分割自,第一列是字符串,第二列是浮点数字,要读取第二列的浮点数字为数组并以文件名为变zd量名。

file=dir('E:\new\*.txt');
for n=1:length(file)
temp=dlmread(['E:\new\',file(n).name],' ',0,1);
eval([file(n).name(1:end-4),'=temp;'])
end

上面代码自己琢磨

合并字符串

方法一:通过c=[a1,b1]格式拼接

第一步打开matlab的命令行窗口,输入a1='abcd123';b1='decf456';c=[a1,b1],按回车键。

方法二:通过strcat函数进行拼接。第一步在命令行窗口中输入d=strcat(a1,b1),按回车键,如下图所示:

方法三:通过sprintf函数拼接多个字符串。第一步输入a1='abcd123';b1='decf456';c1=123456;s=sprintf('%s%s%d',a1,b1,c1),按回车键。

创建文件夹

 (1)

先把代码列出来,下面再慢慢解释。

new_folder = 'C:/test'; % new_folder 保存要创建的文件夹,是绝对路径+文件夹名称

mkdir(new_folder);  % mkdir()函数创建文件夹

(2)

 

这里一定记得 new_folder = 'C:/test'; 中是斜杠‘/’,而不是反斜杠。否则会报错。

我们再看一个例子: 在top_folder下面创建一个resize文件夹

top_folder = 'C:/test'; % 第一层文件夹名称

mkdir(top_folder); % 创建第一层文件夹

second_folder = sprintf('%s/%s', top_folder, 'resize'); % 构造第二层文件夹名称

mkdir(second_folder); % 创建第二层文件夹

% 之后我们可以看到在 C:/test 文件夹下,多了一个 resize 文件夹。关于sprintf()函数的用法看下一章介绍。

% 注意以上代码一行行可拷贝到命令行执行,后者简历.m文件后执行

MATLAB保存图片

方法1:

具体操作为

file—>saveas—>选择保存形式(jpg,tif,eps,png,bmp)

方法2:edit—>copy figure—>图像就复制到剪贴板了,可以复制到Visio软件里面进行后处理

方法3:使用file—>save,类似如第一个按钮

方法4:

figure

x=-2:0.01:2;

y=x.^3;

plot(x,y,'linewidth',3)

saveas(gcf,‘myfig.jpg’

或者

saveas(gcf, 'test', 'png')

可以进一步指定图片的保存路径

saveas(gcf,['D:\figure\work','test','.jpg']);

将图片保存到D盘的\figure\work路径下

方法5:

 

x=-2:0.01:2;

y=x.^3;

plot(x,y,'linewidth',3)

print(gcf,'-dpng','d.png')   %

可以进一步指定图片的保存路径

print(gcf,'-djpeg','C:\d.jpeg'); %将图片保存为jpg格式,

文件名为'd.jpeg'。

保存到电脑的C盘里面

方法6:

 

x=-2:0.01:2;

y=x.^3;

plot(x,y,'linewidth',3)

imwrite(gcf, 'test.png');

Matlab学习-(4)的更多相关文章

  1. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  2. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  3. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

  4. matlab学习笔记---(1)

    Matlab学习笔记 一. Desktop Basics (Matlab 基础知识) 当你打开Matlab的时候,matlab按照以下默认的方式展示出来. 该桌面主要包括以下几部分内容: 当前文件夹: ...

  5. 【数学建模】MATLAB学习笔记——函数式文件

    MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...

  6. MATLAB学习总结(1)

    MATLAB学习总结(1)   path help path cd(current directory) savepath pathtool

  7. matlab学习路线

    知乎:matlab学习路线 MATLAB数学教学视频

  8. Matlab学习笔记(一)—— 三维图形绘制

    这学期公选课选的是MATLAB,所以准备把这学期所学习的整理到博客上,作为记录,哇咔咔~ 一.三维函数图: x=cos(t), y=sin(t), z=t %≤t ≤*pi t=:*pi; %t的取值 ...

  9. Matlab学习笔记(1)

    在帮助文档中查看学习视频的时候.出现以下对话框,不能查看 解决办法:   在系统环境变量中找到Path.添加“%SystemRoot%\system32;%SystemRoot%;%SystemRoo ...

  10. matlab学习日志之并行运算

    原文地址:matlab并行计算,大家共同学习吧,涉及到大规模数据量处理的时候还是效果很好的 今天搞了一下matlab的并行计算,效果好的出乎我的意料. 本来CPU就是双核,不过以前一直注重算法,没注意 ...

随机推荐

  1. 基础组合问题 ————从n个物品里选m个

    package test; import java.util.*; public class Main{ public static int f(int n,int k, int goal){ if( ...

  2. 浅析二分搜索树的数据结构的实现(Java 实现)

    目录 树结构简介 二分搜索树的基础知识 二叉树的基本概念 二分搜索树的基本概念 二分搜索树的基本结构代码实现 二分搜索树的常见基本操作实现 添加操作 添加操作初步实现 添加操作改进 查询操作 遍历操作 ...

  3. 曹工说Spring Boot源码(27)-- Spring的component-scan,光是include-filter属性的各种配置方式,就够玩半天了.md

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  4. CVPR 2019细粒度图像分类竞赛中国团队DeepBlueAI获冠军 | 技术干货分享

    [导读]CVPR 2019细粒度图像分类workshop的挑战赛公布了最终结果:中国团队DeepBlueAI获得冠军.本文带来冠军团队解决方案的技术分享. 近日,在Kaggle上举办的CVPR 201 ...

  5. [noip2012]国王游戏<贪心+高精度>

    题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...

  6. 关于js在一个固定的盒子里面拖拽的问题(包含临界值)

    回武汉打卡第三天,武汉加油,逆战必胜!今天我们一起分享一下js拖拽的问题. 当然实现拖拽方法是有很多的,下面简单讲一种方法,大致思路如下: 首先需要用到的事件主要有  onmousedown,onmo ...

  7. 详细解析kafka之 kafka消费者组与重平衡机制

    消费组组(Consumer group)可以说是kafka很有亮点的一个设计.传统的消息引擎处理模型主要有两种,队列模型,和发布-订阅模型. 队列模型:早期消息处理引擎就是按照队列模型设计的,所谓队列 ...

  8. P1345 [USACO5.4]奶牛的电信(点拆边 + 网络最小割)

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,-,a©,且a1与a2相连,a2 ...

  9. HTTP协议的学习总结

    HTTP:HyperTextTransferProtocol是一种超文本传输协议,协议用在本地浏览器和服务器之间通信 HTTP基于TCP/IP传输数据,如图片,HTML文件 1.HTTP协议特点: 无 ...

  10. C# 快速开发框架搭建—开发工具介绍

    C# 快速开发框架搭建—开发工具介绍 一.VS2013,SQL SERVER R22008 以上两种工具如有不会者自行百度学习下. 二.动软代码生成器 对于经典的三层架构框架来说,使用动软代码生成器会 ...