在命令行敲入 dbstop if error
如果运行出现错误,matlab会自动停在出错的那行,并且保存所有相关变量。新建文件夹:
i=10; dirname=['dir' num2str(i)];%新的文件夹名 a=['mkdir ' dirname];%创建命令 system(a) %;创建文件夹
- 1.对两路信号作图时,可用 linkaxes 同步x轴,以便之后手动放大同步查看局部细节,例如:
ax(1) = subplot(2,1,1)
plot(time,signal1)
ax(2) = subplot(2,1,2)
plot(time,signal2)
linkaxes (ax,'x')
当然你也可以同步y轴:linkaxes (ax,'y') ,甚至两轴都同步:linkaxes (ax,'xy') 。
--------- 更新1---------
- 2. 相信很多人都知道hold on指令能用于作重叠的曲线图,但当两曲线值域相差太大时,以至于不能更好地展示彼此的细节,可考虑用如下方法(MATLAB 2016a 开始支持,低版本的用plotyy):
plot(time,signal1)
yyaxis right % 用右边的y轴展示
plot(time,signal2)
偷一张MATLAB官网的图来展示一下效果(侵删)。此方法跟前面的linkaxes有些相似,然而linkaxes能展示多个曲线。linkaxes适合用于自己查看分析,本方法适合作报告节省空间。
@文件夹
matlab中带“+”和“@”字符命名的文件夹是matlab中的一种文件包, 比如:+folder/Tata.m ,matlab就知道这是一个Tata类文件夹;如果你按照普通的命名方式,比如:someOtherFolder/Tata.m ,或者someOtherFolder/@Tata/Tata.m ,这样matlab只能知道这是一个Tata.m文件。
如果你要用classdef定义一些类,用@Tata的形式,可以把一些方法分别放在不同的路径目录下。以下的例子进一步阐明@目录的用法: Tata 类,方法methodOne 和 methodTwo
somePlaceOnThePath/@Tata/Tata.m
somePlaceOnThePath/@Tata/methodOne.m
somePlaceOnThePath/@Tata/methodTwo.m
你也可以把所有用到的方法放在一个单独的文件中:
somePlaceOnThePath/Tata.m
如果你所写的方法比较复杂,而你又想把它放在不同的文件中以方便查阅和管理,可以如下般使用classdef:
文件一:
%# somePlaceOnThePath/@Tata/Tata.m:
classdef Tata
methods
result =methodTwo(obj,arg)
functionmethodOne(obj)
disp('hello from methodOne');
end
end
end
文件二:
%# somePlaceOnThePath/@Tata/methodTwo.m:
functionresult =methodTwo(obj,arg)
%dostuff withobj andarg
end
严格来讲,methodTwo在classdef中的声明是可以省略的,因为这里使用了默认的说明符。如果想把methodTwo作为私有方法,可以用 (Access = private) 。
clear
clearvars -except VarA, VarB
2.一个数组中,取除了某些元素之外的所有元素
使用setdiff函数
假设
a=1:100;b=[12 17 21 76];
因为某些原因我想取出除了b以外a中的其他所有元素,剩下的记为c
c=setdiff(a,b)
就可以实现了
3.快速对齐script
我写程序有强迫行为,如果看到脚本没有很好地对齐,比如说这边多一个空格,我觉得挺不舒服的,所以就想办法把代码搞对齐。
Ctrl +A(全选)
Ctrl+i(快速对齐)
4.主程序与其子函数不在同一文件夹下,该如何操作才能正常运行主程序?
假设我我有一个script,里面大概有十多个子函数,为了避免不必要的麻烦,我把主程序和子函数分开了,常见的是把子函数单独放在一个文件夹下。如果你直接运行主程序,一定会告诉你某些函数或者变量未定义,如何解决这个问题呢?
方法一是,手动setpath把子函数放到搜索路径中去;
方法二,使用addpath(subfolder name),一步到位,是不是很快?!
5.在当下路径下生成一个文件夹
mkdir(fullfile('.\foldername\'))
生成一个名为foldername的文件夹,这个文件夹可以用来保存你打算保存的某些数据文件
6.找出某一路径下的所有文件名
dir()
这个在对数据或者文件进行批处理时非常有用
7.关闭使用fopen打开的各种文档
我写实验程序时,喜欢将被试者或者操作者每一步的操作都记录在案,类似于Log,这个就需要我们用fopen先打开或者创建一个文本文档。但是由于在debug过程中不可避免地犯错而致使程序中止,想删除这个已经打开的文档,这个时候是删除不了的,matlab总是提示该文件在使用中。那么怎么办呢?fclose('all')就可以关闭所有已经打开或者创建的文档了。
waitbar
clc; clear all; tic; disp ('Hello, World!'); h=waitbar(0,'Please wait..'); n=0; for i=1:100 waitbar(i/100) for j=1:100 for k=0:100; n=factorial(2); end end end close(h) toc
Matlab coder
把.m文件转成C++与c
MATLAB online plot
https://plot.ly/matlab/
plotly
https://plot.ly/organize/WeisongZhao:home