matlab中一些乱七八糟不常用命令整理(不断更新)

  •  inline()

用于定义函数,特点是可以以类似与句柄的调用方法进行调用

>> f=inline('a*x+b','a','b','x');
>> f(1,2,3)

ans =

     5
  • fplot()

用于绘图,特点是可以用字符串表示函数,并且只需要指定自变量变化范围,相比plot方便了一点点吧(plot实际上是连接给入的各个离散的点),而fplot专用于函数绘图

 fplot('x.^3-x.^2+x-1',[-5 5])

结果:matlab中一些乱七八糟不常用命令整理(不断更新)_第1张图片

  • fminbnd()

fminbnd()中,f表示函数,min表示最小值,bnd表示bound(约束)

用于求解单变量函数在给定区间,[x1,x2]上的极小值,如果想求极大值,给目标函数加个负号即可

>> [x,val,exitflag,output]=fminbnd(@(x)x.^2-2*x+1,0,2)

x =

    1.0000


val =

     0


exitflag =

     1


output = 

  包含以下字段的 struct:

    iterations: 5
     funcCount: 6
     algorithm: 'golden section search, parabolic interpolation'
       message: '优化已终止:↵ 当前的 x 满足使用 1.000000e-04 的 OPTIONS.TolX 的终止条件↵'

实际上这个函数在优化工具箱中有

matlab中一些乱七八糟不常用命令整理(不断更新)_第2张图片

  • unifrnd()

unifrnd(20,30,1000,1)意思是:
产生一个1000*1 的array,这个array中的每个元素为20 到30之间连续均匀分布的随机数
e.g.:
a = unifrnd(20,30,5,1)产生(一种可能,因为是随机数)如下结果:
a =
29.5013
22.3114
26.0684
24.8598
28.9130

  • clock

直接在命令行输入clock可以得到返回值(当前时间)

matlab中一些乱七八糟不常用命令整理(不断更新)_第3张图片

  • fft(快速傅里叶变换)

 

我们知道,傅里叶变换是一个函数,它将一个函数由时域转为频域

在matlab中为了进行傅里叶变换,调用格式是给fft一组函数值

如y=fft(x);   (x是一组傅里叶变换之前的值构成的向量),这样就得到的变换后的因变量

那么变换后的自变量如何确定?我们知道,变换后的自变量量纲是赫兹,具体的变换方式是

f = (0:n-1)*(fs/n);

其中f是抽样频率,n是自变量长度。

如果不经过自变量的变换,直接绘图plot(abs(y));这样画的大致图像是对的,但是自变量的变化不对。

当然,如果要对图像进行傅里叶变换,那就不会设计到失序的问题,上来直接干,不许要考虑自变量的变化

 

如对

fs = 100;               % sampling frequency
t = 0:(1/fs):(10-1/fs); % time vector
S = cos(2*pi*15*t);
n = length(S);
X = fft(S);
f = (0:n-1)*(fs/n);     %frequency range
power = abs(X).^2/n;    %power
plot(f,power)

我们希望变换后的函数,频率分量应集中在15Hz附近,但是实际结果不是,还有一个对称的分量在85hz附近

更改的方法是

Y = fftshift(X);
fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range
powershift = abs(Y).^2/n;     % zero-centered power
plot(fshift,powershift)

这样才得到了一般认识的对称的傅里叶变换图像

而fftshift是怎样运行的?

matlab中一些乱七八糟不常用命令整理(不断更新)_第4张图片

 

  • eig()求方阵的特征值与特征向量

>> help eig
eig - 特征值和特征向量

    此 MATLAB 函数 返回一个列向量,其中包含方阵 A 的特征值。

    e = eig(A)
    [V,D] = eig(A)
    [V,D,W] = eig(A)
    e = eig(A,B)
    [V,D] = eig(A,B)
    [V,D,W] = eig(A,B)
    [___] = eig(A,balanceOption)
    [___] = eig(A,B,algorithm)
    [___] = eig(___,eigvalOption)

    另请参阅 balance, condeig, eigs, hess, qz, schur

    eig 的参考页
    名为 eig 的其他函数

>> test=[1 2;3 4];
>> [V,D]=eig(test)

V =

   -0.8246   -0.4160
    0.5658   -0.9094


D =

   -0.3723         0
         0    5.3723

>> diag(test)

ans =

     1
     4

另外注意到这里的diag()函数,它的作用是抽出矩阵中的对角线元素

 

 

 

 

 

你可能感兴趣的:(matlab中一些乱七八糟不常用命令整理(不断更新))