【MATLAB】xx操作总结

 
 

在命令行敲入 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



猜你喜欢

转载自blog.csdn.net/weixin_41923961/article/details/80465806
xx