【MATLAB】xx操作总结【更新中】
在命令行敲入 dbstop if error
如果運行出現(xiàn)錯誤,matlab會自動停在出錯的那行,并且保存所有相關(guān)變量。
新建文件夾:
i=10; dirname=['dir' num2str(i)];%新的文件夾名 a=['mkdir ' dirname];%創(chuàng)建命令 system(a) %;創(chuàng)建文件夾1.對兩路信號作圖時,可用 linkaxes 同步x軸,以便之后手動放大同步查看局部細節(jié),例如:
ax(1) = subplot(2,1,1) plot(time,signal1) ax(2) = subplot(2,1,2) plot(time,signal2) linkaxes (ax,'x')當然你也可以同步y(tǒng)軸:linkaxes (ax,'y') ,甚至兩軸都同步:linkaxes (ax,'xy') 。
2. 相信很多人都知道hold on指令能用于作重疊的曲線圖,但當兩曲線值域相差太大時,以至于不能更好地展示彼此的細節(jié),可考慮用如下方法(MATLAB 2016a 開始支持,低版本的用plotyy):
plot(time,signal1) yyaxis right % 用右邊的y軸展示 plot(time,signal2)偷一張MATLAB官網(wǎng)的圖來展示一下效果(侵刪)。此方法跟前面的linkaxes有些相似,然而linkaxes能展示多個曲線。linkaxes適合用于自己查看分析,本方法適合作報告節(jié)省空間。
?
@文件夾
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
如果你所寫的方法比較復(fù)雜,而你又想把它放在不同的文件中以方便查閱和管理,可以如下般使用classdef:
文件一:
%# somePlaceOnThePath/@Tata/Tata.m: classdef Tatamethodsresult =methodTwo(obj,arg)functionmethodOne(obj)disp('hello from methodOne');endend end文件二:
%# somePlaceOnThePath/@Tata/methodTwo.m: functionresult =methodTwo(obj,arg) %dostuff withobj andarg end嚴格來講,methodTwo在classdef中的聲明是可以省略的,因為這里使用了默認的說明符。如果想把methodTwo作為私有方法,可以用 (Access = private) 。
clear
clearvars -except VarA, VarB一個數(shù)組中,取除了某些元素之外的所有元素
使用setdiff函數(shù)
假設(shè)
a=1:100;b=[12 17 21 76];
因為某些原因我想取出除了b以外a中的其他所有元素,剩下的記為c
c=setdiff(a,b)
就可以實現(xiàn)了
快速對齊script
我寫程序有強迫行為,如果看到腳本沒有很好地對齊,比如說這邊多一個空格,我覺得挺不舒服的,所以就想辦法把代碼搞對齊。
Ctrl +A(全選)
Ctrl+i(快速對齊)
主程序與其子函數(shù)不在同一文件夾下,該如何操作才能正常運行主程序?
假設(shè)我我有一個script,里面大概有十多個子函數(shù),為了避免不必要的麻煩,我把主程序和子函數(shù)分開了,常見的是把子函數(shù)單獨放在一個文件夾下。如果你直接運行主程序,一定會告訴你某些函數(shù)或者變量未定義,如何解決這個問題呢?
方法一是,手動setpath把子函數(shù)放到搜索路徑中去;
方法二,使用addpath(subfolder name),一步到位,是不是很快?!
在當下路徑下生成一個文件夾
mkdir(fullfile('.\foldername\'))
生成一個名為foldername的文件夾,這個文件夾可以用來保存你打算保存的某些數(shù)據(jù)文件
找出某一路徑下的所有文件名
dir()
這個在對數(shù)據(jù)或者文件進行批處理時非常有用
關(guān)閉使用fopen打開的各種文檔
我寫實驗程序時,喜歡將被試者或者操作者每一步的操作都記錄在案,類似于Log,這個就需要我們用fopen先打開或者創(chuàng)建一個文本文檔。但是由于在debug過程中不可避免地犯錯而致使程序中止,想刪除這個已經(jīng)打開的文檔,這個時候是刪除不了的,matlab總是提示該文件在使用中。那么怎么辦呢?fclose('all')就可以關(guān)閉所有已經(jīng)打開或者創(chuàng)建的文檔了。
waitbar
clc; clear all; tic; disp ('Hello, World!'); h=waitbar(0,'Please wait..'); n=0; for i=1:100waitbar(i/100)for j=1:100for k=0:100;n=factorial(2);endend end close(h) tocMatlab coder
把.m文件轉(zhuǎn)成C++與c
MATLAB online plot
https://plot.ly/matlab/
plotly
https://plot.ly/organize/WeisongZhao:home
deploytoolguideMatlab 操作魔改
如果你有一個編寫好的程序,但是數(shù)據(jù)格式和操作變了,但是框架是一致的,可以利用@文件夾來匹配。
舉例:比如A*x原來就是二維矩陣相乘,但現(xiàn)在變成2維卷積了,那么可以這么做:
1. 建立一個新文件夾@XXX
2. 在這個文件夾里新建一個mtimes.m文件
3. 將A的數(shù)據(jù)格式改成class XXX
A.Amatrix = A; A = class(A,'XXX');4. 然后定義mtimes.m
function result = mtimes(A,x)result = conv2(x,A.Amatrix,'same');這樣原來的result = Ax就變成了result = A?x了。?
總結(jié)
以上是生活随笔為你收集整理的【MATLAB】xx操作总结【更新中】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KnowledgeTree简体中文汉化包
- 下一篇: 利用cx_Freeze将py文件打包成e