MATLAB 中有哪些命令,让人相见恨晚?
唐平,航天灌水,业余PM,初涉CV,主业刷知乎
强大的、万能的、不同维数的矩阵扩展混合运算,从此告别矩阵运算中的for循环
另,matlab里所有以fun为后缀的命令都很好用,arrayfun,cellfun,structfun,等等
@() 匿名函数
使用函数式编程,在编写以数学公式为主的程序中比传统编程方法好得多
set(gca,...)等
所有与画图相关的命令都包含了千奇百怪的属性和参数,非常实用,如著名的 set(gca,...)
$ $
画图中的标题、注释等文字内容是可以直接使用latex格式的,只须在包含latex命令的部分前后用$框起来即可
slice
高维切片,要在三维空间中表现三个以上变量的函数关系,必备此命令
冷哲,无论对人还是对物,自控都是必需的
比方说,一个名叫array数组里面,你要将里面大于1的都变成0,就不必用到循环:
array(array>1)=0;
把大于1小于3的变成0。
array(and(array>1,array<3))=0;
当然,还可以使用find,这个也很好用。
——————————————————————————————
另一个重要的技巧是delete/clf-plot-pause
用plot可以画图(注意记录句柄),然后用delete删掉特定图象,或用clf清图,再绘制,这可以在figure窗口产生动画。但是如果只plot,往往只会在全部程序执行结束时显示,这时候需要用pause让figure完成图像的更新。drawnow貌似也可以,但是我比较喜欢用pause,能够简单地控制动画的速度。
这会方便调试和展示。这个技巧尤其适合使用matlab的图形用户界面设计功能时构造一个显示运行状态等信息的figure。
——————————————————————————————
mathworks 有一个fig函数(不是系统自带的,是别人编写的),可以很容易地调整字体、尺寸以及绘图是否有边框等等,不必画出来再自己手动调整。这对于写论文的人来说会很方便。
——————————————————————————————
善用eval,可以让你的程序的灵活度大大加强。尤其是在变量名的问题上。当然,这可能会对代码维护和调试带来麻烦。很多情况可以用其他方法代替。 @王备 指出了一个链接,值得一读Alternatives to the eval Function
——————————————————————————————
save、load可以将部分或全部变量、结构体等存入mat文件或从mat导入workspace
global可以将变量变为全局变量,在各函数之间共享。不过这不太好用,尽量慎用吧。
——————————————————————————————
exist可以检测某目标(如变量)是否存在,减少一些麻烦。
——————————————————————————————
surf、mesh都很漂亮,不过surf之后记得用shading interp,看起来更漂亮。
——————————————————————————————
对于一些重复性的矩阵赋值,比如:1、2、3、4、1、2、3、4
可以使用repmat,将一个矩阵重复扩展为更大的矩阵。
——————————————————————————————
很多函数都有高级的用法,当使用到了,但又觉得有点麻烦的时候,不妨help一下,看看其他的用法。
总而言之,还是多上网搜索,一般问题总有很好的答案。
匿名用户
2. matlab -nojvm -nodisplay -nodesktop 不启动图形界面跑matlab,比有图形界面要快一些;
3. 没有图形界面调程序的时候,cd/pwd/cd ../ls等doc命令就很有用了;
4. clear all,clc,ctrl+C中断正在跑的程序(比如死循环了)什么的;
5. find (查找矩阵元素不需要循环遍历);
6. cmd = sprint ('command'); system(cmd); 在服务器上跑Linux指令;
7. 第二句改成eval(cmd)也有相似效果,没研究过区别。
韩笑,hi~~
绝对是向量化编程的利器,具体参见
科学网—Matlab中矩阵列向量归一化的三种方法比较
王备,数学我不懂,勿邀!
1. 转置但不共轭
b = a.'
2. 得到列向量
b = a(:)
相应的,得到行向量就是
b = a(:).'
3. 清除并更新所有 class 的定义
clear classes
当你修改了某些 class 的定义时,需要调用此命令——仅仅 clear all 是不够的。
4. 忽略某些返回参数
[~, idx] = max(a)
忽略最大值,只返回最大值的索引。
【注】
这种语法是在 Matlab 7.9 (2009b) 中引入的,在此之前的版本不支持这种用法。如果你使用早期版本,可以使用如下写法:
[tmp, idx] = max(a); clear tmp
或者一句话搞定
[idx, idx] = max(a)
不过第二种写法不见得每个人都会喜欢。
5. 去除长度为 1 的维度(常用于 3D 矩阵转为 2D)
b = squeeze(a)
Simulink 的 save to workspace 模块经常得到一个 [m x 1 x n] 的三维矩阵,直接使用非常不便。使用 squeeze 后,会将其转换为 [m x n] 的二维矩阵。
6. 代码运行耗时显示
tic; some_code_to_run(); toc
tic/toc 会在 Matlab 命令行中打印出两条命令之间的代码的运行耗时。更详细的代码效率分析,可以使用 profile 命令。
7. 电脑跑分
bench
只能用于相同版本的 Matlab 下电脑之间的比较。
8. 记录命令行命令
diary on
% Lots of my Matlab commands here.
diary off
使用 diary 好处是运行结果也会被记录下来,并且以纯文本方式存储,方便编辑。更正式的报告,则推荐使用 publish。
9. 反转向量
b = fliplr(a) % For row-vector a.
b = flipud(a) % For column-vector a.
b = wrev(a) % For any vector a.
b = a(end:-1:1); % This is the implementation of function wrev.
10. 去除数据中的 NaN
a(isnan(a)) = []
对于 inf 和 -inf,使用 isinf 命令。
傅红雪,立志成为大魔导师的巫婆。
tengmoon,机械
大家都知道,如果用一个函数对一个矩阵中的每一个元素进行求值,那么就要用到 .*, ./之类
function r = fmat(x)
r = x.^2 + 1./x;
end A = [1 2 3 4];
fmat(A)
上面这样就可以做到用fmat对A每一个元素分别求值。但不是所有的函数都像fmat这样,下面这种情况就不行:
function r = fmat2(x)
if x > 0r = x.^2;
else r = 1./x;
endfmat2(A) % 会出错
可以看到,因为上面fmat2 里面有判断语句,就不能把整个矩阵作为输入参数。我知道的解决方法有3种:
% 法1
for i = 1:length(A)r(i) = fmat2(A(i));
end% 法2 用arrayfun
r = arrayfun(@fmat2, A) % 法3 用逻辑矩阵r = zeros(1,length(A));
l1 = (A>0);
l2 = ~l1;
r(l1) = A(l1).^2;
r(l2) = 1./A(l2);
值得说一说的是第二种和第三种。arrayfun只是比用for更加简洁,速度上没有太大差别。但是,用逻辑矩阵的话,就比前两种快10倍。逻辑矩阵是向量化的利器。比如 A>0 就会返回一个逻辑矩阵,里面全是1, 0 。并且, 逻辑矩阵可以当作索引, A(A>0) 就把所有A>0 的数返回。
2. 类型转换
matlab中一共有4种类型:func(函数句柄), num(数值), sym(符号), str(字符)
- 在数值运算中,使用func, num
- 需要输入输出出,要用到str
- 进行符号运算(符号微分,积分)时,用sym
我们使用matlab,一般有这么个过程:
- 先进行公式推导,这时要用sym, symfun类型
- 再进行数值计算,这里要用普通的func, 和num 类型
- 最后与GUI界面交互的时候,要用str类型
这里介绍几个用于转换的函数
str2func('@(x,y)sin(x*y)') % str -> @func 返回一个函数句柄syms x y
fs(x,y) = x^2+sin(x*y);
fh=matlabFunction(fs); % symfun -> @func 返回一个函数句柄 !!!强烈推荐fh = @(x)x.^2+sin(x);
fun2str(fh) % @func ->str 函数句柄变为字符
3. 三维画图
大家都晓得,作图第一步,对 x, y 划分网格,用的是 meshgrid 。这样画出来的图在一个立方体的范围内,但是有时候我们要显示一个圆柱体内的三维图形这时候画网格可以用 cylinder
[x, y] = cylinder(linspace(0,10,100),200) % linspace(0,10,100)指在半径[0, 10]上划分为100份,参数200指的是在圆周方向上 200等分
z = sin(x) + cos(y);
mesh(x, y, z);
4. 学无止境
学matlab,还是要去论坛,看看大神们的说法,大神们的做法。比如说1中的向量化
function r = fmat2(x)
if x > 0r = x.^2;
else r = 1./x;
endfmat2(A) % 会出错
论坛中的大神的做法是这样的
fmat3 = @(x)x.^2.*(x>0) + 1./x.*(x<=0);
fmat3(A)
极其简洁!!!我看到后非常佩服
先这些吧
迈斯沃克,matlab课程设计技术支持,有偿技术问题咨…
find
is*** 系列函数。
str2num num2str strcat + eval
open
winopen
! start ****.exe
timer
uiwait uiresume
analoginput
古十长
2.fir1,fir2等一系列示波器构造相关函数
3.用text函数直接在figure中写出latex风格公式;(有时Matlab/C风格的文本格式公式咋看之下太难懂)
比如说:
syms x;
text(.5,.5,['$',latex(x^(2*x^x+x/3)),'$'],'interpreter','latex','HorizontalAlignment','center','fontsize',18)
4.我写过一个主要用dir,system,zip这几个函数管理打包下载好的漫画的小脚本。
5.其实工具也算是命令的封装,常用并觉得好用的一般有拟合工具,小波等时频分析工具,神经网络,还有射频相关的小工具
6.快捷键ctrl+i,不算命令,我觉得不少人不知道这个
7. 开着电脑,matlab和音箱,然后在办公室有人的时候远程自己的电脑,让自己电脑突然说话。。。【我觉得还是Mathematica的某个函数好使一些~】
sp=actxserver('SAPI.SpVoice');
sp.Speak('hello')
8.eval,比如可以轻易批量生成m1到m8这些具有规律的变量名
立党,相声表演艺术家
当你处理大规模稀疏模式的矩阵时,如果不用sparse,不仅耗费时间,也耗费内存,用了sparse之后性能上升很多,而内存占用也降低很多,非常棒!
小生境
发几段代码感受下bsxfun,broadcasting操作才是向量化编程语言的归属:
1.
源代码
function x = calcuProjOfPQ(CPs,VSPs)
x = zeros(size(CPs,1),size(VSPs,1),3);
for k = 1 : size(CPs,1)for h = 1 : size(VSPs,1)for i = 1 : 3x(k,h,i) = CPs(k, i+1) - VSPs(h, i+1);endend
end
end
broadcasting化:
function x = revised_calcuProjOfPQ(CPs,VSPs)
x = bsxfun(@minus, reshape(CPs(:, 2:end), [], 1, 3), reshape(VSPs(:, 2:end), 1, [], 3));
end
2.
源代码
function reTheta = calcuTheta(X,R,Nor)
[m,n,~] = size(X);
reTheta = zeros(m,n);
for i = 1 : mfor j = 1 : nreTheta(i,j) = X(i,j,1)/R(i,j) * Nor(i,1) + ...X(i,j,2)/R(i,j) * Nor(i,2) + ...X(i,j,3)/R(i,j) * Nor(i,3);end
end
end
broadcasting化:
function reTheta = revised_calcuTheta(X,R,Nor)
reTheta = sum(bsxfun(@times, bsxfun(@rdivide, X, R), reshape(Nor, [], 1, 3)), 3);
end
3.
源代码
function [Uij,Tij] = calcuUijTij(shearM, poisson, R, X, Nor, cosTheta)
Uij = zeros(size(X,1)*3,size(X,2)*3);
Tij = zeros(size(X,1)*3,size(X,2)*3);
elementUij = zeros(3,3);
elementTij = zeros(3,3);
% ganerate Uij and Tij
for a = 1 : size(X,1)for b = 1 : size(X,2)for i = 1 : size(X,3)for j = 1 : size(X,3)if i == jdetaij = 1;elsedetaij = 0;endelementUij(i,j) = 1 / (16*pi*shearM*(1-poisson) * R(a,b)) * ...((3-4*poisson) * detaij +X(a,b,i)*X(a,b,j)/(R(a,b))^2);elementTij(i,j) = -1/(8*pi*(1-poisson)*R(a,b)^2) * (((1-2 * ...poisson) * detaij + 3*X(a,b,i) * X(a,b,j)/R(a,b)^2) * ...cosTheta(a,b) - (1-2*poisson) * (( X(a,b,i) * Nor(a,j)) .../ R(a,b)- X(a,b,j) * Nor(a,i) / R(a,b)));endendUij(a*3-2:a*3,b*3-2:b*3) = elementUij;%Uij(a*3-2:a*3,b*3-2:b*3) + Tij(a*3-2:a*3,b*3-2:b*3) = elementTij;%Tij(a*3-2:a*3,b*3-2:b*3) + end
end
end
broadcasting化:
function [Uij, Tij] = revised_calcuUijTij(shearM, poisson, R, X, Nor, cosTheta)
[ir, jr] = size(R); [ix, jx, kx] = size(X);
R = reshape(R, 1,1,ir,jr); cosTheta = reshape(cosTheta, 1,1,ir,jr);
X1 = reshape(permute(X, [3,1,2]), [],1,ix,jx); X2 = reshape(permute(X, [3,1,2]), 1,[],ix,jx);
tmp = bsxfun(@rdivide, bsxfun(@times, X1, X2), R.^2);
Uij = reshape(permute(reshape(permute(bsxfun(@rdivide, bsxfun(@plus, tmp, (3-4*poisson)*eye(kx)), R) / (16*pi*shearM*(1-poisson)), [1,2,4,3]), 3,[],ix), [2,1,3]), [],3*ix).';
Tij = bsxfun(@times, 3*tmp, cosTheta) - (1-2*poisson) * bsxfun(@rdivide, (bsxfun(@times, X1, reshape(Nor.', 1,3,[])) - bsxfun(@times, X2, reshape(Nor.', 3,1,[]))), R);
Tij = reshape(permute(reshape(permute(bsxfun(@rdivide, bsxfun(@plus, Tij, bsxfun(@times, (1-2*poisson)*eye(kx), cosTheta)), R.^2) / (8*pi*(poisson-1)), [1,2,4,3]), 3,[],ix), [2,1,3]), [],3*ix).';
end
4.
源代码
function [ul, pl] = calcuUlPl(~) %alpha, Uij, Tij
global m n Uij Tij alpha
disp = zeros(size(Uij,1),1);
fors = zeros(size(Uij,1),1);
ulData1 = 0;
ulData2 = 0;
ulData3 = 0;
plData1 = 0;
plData2 = 0;
plData3 = 0;
for j = 1 : mfor i = 1 : nulData1 = ulData1 + alpha(i,:) * Uij(j*3-2:j*3,i*3-2);ulData2 = ulData2 + alpha(i,:) * Uij(j*3-2:j*3,i*3-1);ulData3 = ulData3 + alpha(i,:) * Uij(j*3-2:j*3,i*3-0);
% ========================================================================= plData1 = plData1 + alpha(i,:) * Tij(j*3-2:j*3,i*3-2);plData2 = plData2 + alpha(i,:) * Tij(j*3-2:j*3,i*3-1);plData3 = plData3 + alpha(i,:) * Tij(j*3-2:j*3,i*3-0);enddisp(j*3-2:j*3,1) =[ulData1;ulData2;ulData3];
% =========================================================================fors(j*3-2:j*3,1) =[plData1;plData2;plData3];
%% ==================================================================% Forget to zero the accumulation variable, I spent nearly half a month of% time to debug the codeulData1 = 0;ulData2 = 0;ulData3 = 0;plData1 = 0;plData2 = 0;plData3 = 0;
%% ==================================================================
end
sum(disp)
sum(fors)
% reshape the ul and pl to 2 mx3 martices respectively
ul = zeros(m,3);pl = zeros(m,3);
ul = reshape(disp,[3,numel(disp)/3])';
pl = reshape(fors,[3,numel(fors)/3])';
end
broadcasting化:
function [ul, pl] = revised_calcuUlPl(Uij,Tij,alpha)
n = size(Uij, 2);
alpha = reshape(alpha.',3,1,[]);
ul = reshape(sum(sum(bsxfun(@times, alpha, reshape(permute(reshape(Uij.', n,3,[]), [2,1,3]), 3,3,n/3,[])), 3), 1), 3, []).';
pl = reshape(sum(sum(bsxfun(@times, alpha, reshape(permute(reshape(Tij.', n,3,[]), [2,1,3]), 3,3,n/3,[])), 3), 1), 3, []).';
end
效率大约提高了20倍。
就是这样。
阿拉姗,数学系吉祥物
1、sparse,生成稀疏矩阵函数。
节省时间空间小能手,尤其是面对很多带有对角阵,三对角阵的算法。
2、root(a),求多项式的根。(这里a是系数数组)
3、type,显示指定m文件的内容。
4、grid on,给画的图像加网格。(没有网格的散点图逼死强迫症ಠ_ಠ)
5、clf,既然clc出现了,那么clf也来凑下热闹吧(O_O)[clf,hold on],一图多线流起手式。
王王,哈工大,搬砖狗
Filestorm,Artificial artificial intelligence
accumarray()
附件是一个针对整数的unique(),运行速度比原生 unique() 快60%
function [elements, counts] = intUnique(a)a = a(:);if sum((a)~=round(a))>0error('a must be int!');
endoffsetA = min(a)-1;
a = a-offsetA;
counts = accumarray(a, 1);elements = find(counts);
counts = counts(elements);
elements = elements+offsetA;end
沈周
向量化编程
find
函数式编程
eval
Hash表
containers
正则表达式
regexp
Pacino An
要说最有用的指令,那必须是help…
白如冰,闭关修炼
myd7349,坚持“当上CTO,迎娶白富美”的梦想100年…
Notebook--matlab_了凡春秋
2. 高端大气上档次的GUIDE,老板再也不用担心我不会用uicontrol拼GUI了。
3. doc命令,我灰常喜欢。(help给的东西不太详细)
4. type可以查看很多函数/命令的source code。
5. matlab.exe -regserver
6. 昨天用textread解析一个特定格式的文本文件,headerline参数可以让我们跳过文件开头指定行数,真是考虑得周到。有了textread,就不用fopen、fread、fscanf……这么费劲了。
王征,不是别人忽略你 而是你太闲
随心所欲
还有matlab coder和类似的工具箱。之前还用了一个类似的免费工具包,可以直接similink拖框框后直接烧写到stm32里,再也不担心出错了,当时惊艳的不行不行的,结果一查人家早就在搞了。浙大也有个教授在做这方面的工作。真是懒人的福利!而且听说很多国防方面的工程就是用这种方法做的。有知道详情的同学请继续。如果想起来再上各种链接吧……手机不方便
mapwyj
吕延庆,关注复杂系统、数据挖掘,电影,音乐等。…
1,which命令,可以找到命令所在的具体路径
例如:
>> which fft
built-in (D:\MATLAB\R2008b\toolbox\matlab\datafun\@logical\fft) % logical method
另外,新版的matlab在命令行双击tab能自动补全。
2,获得一个变量的类型,用class函数
例如:
>> class([0 1]) % double
>> class('test') % char
3,画直方图。(看看导入是多么方便,直方图也一句搞定)
一般成绩统计是用excel来统计的,就把那一列复制成一个文本文件,比如score.txt
79
82
65
94
...
1)Matlab先把数据导入myscore变量:
>> myscore=importdata('score.txt');
成绩一个N*1的列向量myscore,N是学生人数。
2)然后用这些成绩做个直方图:
>> hist(myscore);
这句就画出直方图(histogram)了。所谓直方图,就是把各成绩段,按照落入各个区间的数量,画出柱状图。(横坐标为成绩分布区间,纵坐标为落入对应区间的成绩个数)。
4,在matlab里使用LaTeX
图的标题或标记中可以用LaTeX书写公式。
例如:为图加标题时,用
title('$$f(x)=cos(x)$$', 'interpreter','latex' );
这里title函数的格式是 title(...,'PropertyName',PropertyValue),
后面两个参数表示使用latex语法处理字符串(经测试,否则会当做普通字符串处理),其他命令有类似选项。
LaTeX表示的数学公式的前后用$ $, 或$$ $$或 \( \),三种形式中的任意一个。
5,画多幅图
1)叠加多幅图时,可以用hold on命令保持住,然后可以继续往上面叠加图(如plot等命令),最后hold off。
2)画多个子图,用subplot命令,例如subplot( 2, 4, 1) 是2行4列的第1幅子图,接着用plot等命令画图,下一个subplot命令切换到下一子图 ......。
阿呆,学生
提问都说了是命令,大家回答那么多函数干什么... 我来给一个超级大杀器
在命令行敲入 dbstop if error
如果运行出现错误,matlab会自动停在出错的那行,并且保存所有相关变量。再也不用设断点了有没有!!!
爱冰,我和我的幽默配合的很默契
之后就把解析几何课上的曲面整个全做了一遍,空间想象能力上升那叫一个档次。
野合菌,᷇Θ̵̵̵̤Θ᷆ 闷声大发财
还有,我最近才知道 “...” (三个句号)可以用来给长命令换行= =
还有,dos可以执行DOS命令。。。
郑凯,无知之徒
曾博,不懂物理,会光学,可内推
匿名用户
-----
好奇的知友可以自己试试。。
light Day,苦逼工科狗
>> why
The bald and not excessively bald and not excessively smart hamster obeyed a terrified and not excessively terrified hamster.
>> why
To fool the tall good and smart system manager.
>> why
The rich rich and tall and good system manager suggested it.
>> why
He wanted it that way.
>> why
The programmer suggested it.
>> why
Mara suggested it.
>> why
To please a very terrified and smart and tall engineer.
>> why
The tall system manager obeyed some engineer.
>> why
To satisfy some programmer.
>> why
Mary Ann wanted it that way.
>> why
Can you rephrase that?
>> why
Because Mary Ann wanted it that way.
>> why
How should I know?
>> why
Because they asked the terrified and smart and tall and tall programmer.
>> why
To fool a young tall hamster.
>> why
For the love of a bald and terrified mathematician.
>> why
It's your karma.
>> why
Some terrified and rich system manager knew it was a good idea.
>> why
Don't you have something better to do?
>> why
He suggested it.
>> why
A terrified and good and not very rich engineer helped the bald programmer.
>> why
To fool some kid.
>> why
I obeyed the tall and young system manager.
FogLikelihood,Maximum
Dollar老师的工具箱。谁用谁知道
Jingyi,假装是trader?????
于墨
ind2sub
sub2ind
聂鑫,对所有知识状物体充满好奇= ̄ω ̄=
%%
Linglai Li
2) cellfun,对cell数组进行函数操作,因为很多函数不直接支持cell的。
3) varargin, nargin,变长度输入变量
4) movie及相关绘图函数,得查看一下help了,记不太清了,能做demo动画,很酷
夕阳山顶
月明,我辜负了知乎,我不是来分享知识的,这个…
梁维,Data不说谎,说谎的是人。
以前一直各种read
cvsread
xlsread
textread
自从发现了右键其他第三方文件import data以后
麻麻再也不用担心我的数据载入了
import data可选各行载入,整体矩阵载入,等等...甚至能根据header命名变量,挺好用的感觉
这个算是因为版本更迭而产生的相见恨晚
benman,换个姿势,继续挨踢
Zenan Wang,Econ PhD candidate
曹荣禹,persist......forever
for i=1:m
for j=i+1:m
result(i,j) = sqrt( (A(i,:)-A(j,:))*(A(i,:)-A(j,:))' ) ;
end
end
但是通过repmat可以直接代替之,如下。
aa = repmat(sum(A.^2,2), 1, m) ;
bb = repmat(sum(A.^2,2)', m, 1) ;
ab = A*A' ;
result = aa + bb - 2*ab ;
思想是这样,程序可能有些小错误还需要根据具体情况而言,基本上两端代码的时间比是,在A的样本个数是1000的时候,第一段需要10秒左右,第二段需要0.1秒左右。
萤-时光灯,健忘的逗比青年欢乐多
幽林夜雨,挨踢狗,汪汪!
舒幼生,这个笑话有点冷
matlab是一座无比丰富的宝库,就像R语一样,使用他们本身就已经是站在巨人的肩膀上了。
流水,凡是随缘
2. functions函数可以调试程序,返回当时的一些有效信息
3. inmem返回内存中正在执行的函数等
4. setenv设置环境变量
这些函数都有相关的see also, 很有帮助
苍洪,一个在武汉搬砖的小硕。。。
xn geo,Geography/Satellite Oceanography
MATLAB2014b的绘图真心不错,谁用谁知道!
鹌鹑,咕咕咕
匿名用户
Coldwings,专业数星星团队成员
张杰,代码
2.repmat函数
3.find函数
4.vec2ind和ind2vec函数,以及compet函数
5.dist函数
Lillian Song,好奇宝宝(两人共用号,略精分,勿怪)
苏皮皮,线性代数爱好者
奈何尘雨,希望在各方面有所涉猎的程序猿
FFT
为了在科学计算和数字信号处理等领域使用计算机进行Fourier变换,必须将函数定义在离散点上而非连续域内,这一点非常符合所给的波函数的数据,数据点之间同样也存在着定义在离散点上而不是连续域内,且须满足有限性或周期性条件。这种情况下,序列
的离散傅里叶变换为:
FFT(Fast Fourier Transformation),即为快速Fourier变换,是离散Fourier变换的快速算法,它是根据离散Fourier变换的奇偶虚实等特性,对离散Fourier变换的算法进行改进获得的,而Fourier变换则是能将满足一条件的某个函数表示成三角函数(正弦、余弦)或者他们的组合形式。另f(t)为t的周期函数,如果t满足条件:在一个周期内具有有限个极值;绝对可积。则有下式成立。称为积分运算f(t)的Fourier变换。
利用这一方法可以将原先时域的数据改成了频域的图方便后面处理。这只是我编的MATLAB将DTMF信号的解码程序中的部分程序= =听说FFT用得好几行就没了。。。
笔拙,献丑了。。。
灰姑娘公主,喵~喵~喵~
给你看看
熊猫潘达,学习者
孙宇涛,にゃん!
还有simplify(), diff(), regexp(), latex()
Nieh
语法:冒号。。。。
郭富城,向往美好新生活
玉面书生
卫仁,呼哈
Yuan Zi,爱车,爱摄影,爱美食的码农
比如:
str1 = 'Hello';
str2 = 'world';
str3 = ['This is: ', str1, str2];
输出str3: This is: Helloworld
糟曰,_AU
爱知,算法,编码,音乐,人生
MATLAB 中有哪些命令,让人相见恨晚?相关推荐
- matlab中有哪些有趣的命令?好玩的matlab彩蛋
比如说,我在command窗口输入"xpbombs"然后回车运行就会跳出一个扫雷游戏的小程序,或者输入"vibes"运行就会跳出一个膜振动的动画,还可以调节快慢 ...
- 在matlab中有几种获得帮助的途径,matlab经典习题及解答
精品文档 . 1欢迎下载 第1章 MATLAB 概论 1.1 与其他计算机语言相比较,MATLAB 语言突出的特点是什么? MATLAB 具有功能强大.使用方便.输入简捷.库函数丰富.开放性强等特点. ...
- 微分法MATLAB语言程序,matlab微积分运算命令与例题pdf
一.用Matlab进行微积分运算 直接在word计算 可以用notebook syms x n;s1=symsum(sin(x)/n^2, n,1, inf) s1 = (pi^2*sin(x))/6 ...
- matlab提示output,强制Matlab输出到命令行(Force Matlab output to command line)
强制Matlab输出到命令行(Force Matlab output to command line) 我正在从Windows命令提示符运行MATLAB脚本: "C:\Program Fil ...
- MATLAB基础操作--命令窗口
MATLAB基础操作–命令窗口 常用的赋值运算符-'='对变量进行赋值 x=9-5 x = 4 x-8=9 x-8=9 ↑ 错误: '=' 运算符的使用不正确.要为变量赋值,请使用 '='.要比较值是 ...
- matlab icol,Matlab 图像处理相关函数命令大全
Matlab 图像处理相关函数命令大全 一.通用函数: colorbar 显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colo ...
- excel 两组数据交点_让科研人相见恨晚的技巧,用Excel做柱状图、箱型图及数据分析!(转载自ZSCI)...
来源:ZSCI 让科研人相见恨晚的技巧,用Excel做柱状图.箱型图及数据分析! 面对大量的实验数据,却不知道如何快速的将自己想要的结果筛选出来.筛选后也只能做简单的数据图,绘制高级的图形又成了一个难 ...
- matlab图像剪裁命令imcrop()
matlab图像剪裁命令imcrop() 调用格式: I2=imcrop(I,RECT): X2=imcrop(X,MAP,RECT): RGB2=imcrop(RGB,RECT): 其中,I.X.R ...
- 【Matlab】使用Matlab运行Windows命令行命令+实例
可以使用Matlab的一些命令来帮助程序运行.比如说 ! calc % 打开计算器 ! mspaint % 打开画图 dos calc % 打开计算器 比如一个程序要运行很长时间,而我们又不能一直守在 ...
- Matlab:查找命令行窗口或历史记录中的文本
Matlab:查找命令行窗口或历史记录中的文本 查找命令行窗口中的文本 使用"查找"对话框搜索 使用键盘快捷方式进行搜索 查找命令历史记录窗口中的文本 查找命令行窗口中的文本 您可 ...
最新文章
- Android TextView 去除顶部和底部留白(上下的间距有空白问题处理)
- bootstrap 引用注意事项
- 教程 | 以太坊智能合约编程之菜鸟教程
- 牛客 - 阔力梯的树(树上启发式合并)
- linux应用之----进程控制理论
- Jexus~docker与它产生了暖味
- 兰州交通大学C语言课程设计,兰州交通大学C语言课程设计报告(完整版).doc
- sql 按时间二段排序
- Zookeeper——入门介绍(相关原理、安装启动及使用操作)
- element ui el-dialog 居中,并且内容多的时候内部可以滚动
- iframe页面里的链接在ios设备无法点击的解决办法
- Git 合并代码操作失误,Rebase current,导致拉取代码一直冲突
- WML语言基础(WAP建站)六
- python re 使用
- Windows系统设置定时自动重启服务程序
- 使用云开发实现微信支付的具体方法
- 【鸡汤】过往不恋,未来不迎,当下不杂
- 我为什么鼓励工程师写博客
- c语言存储图像jpg,用c语言如何读取和保存jpg图片文件?
- 怎么把ogg音频格式转换为mp3