Matlab 常用操作


MATLAB常用操作

产生一个a至b之间的随机矩阵,大小为1x5

a + (b - a) * rand(1,5)

产生一个均值为0,标准差(方差开根号)为2的正态分布的随机矩阵,大小为3x4

normrnd(0,2,3,4)

roundn—任意位置四舍五入

% 0个位 1十位  2百位 -1小数点后一位  
a = 3.1415
roundn(a,-2)    % ans   =  3.1400
roundn(a,2)      % ans   =  0
a =31415
roundn(a,2)   % ans  = 31400
roundn(5.5,0) %6
roundn(5.5,1) %10

方差

A = [3 4 5 3 2 1];
var(A,1)

样本方差

A = [3 4 5 3 2 1];
var(A)

标准差

A = [3 4 5 3 2 1];
std(A)

数组元素求和

% 求数组每一列的和
sum(A)
% 求数组每一行的和
sum(A,2)

数组元素的乘积

% 求数组每一列元素相乘的结果
prod(A)
% 求数组每一行元素相乘的结果
prod(A,2)

按列归一化

每一列的每一个元素除以这一列的和

求矩阵列向量间的相关系数矩阵

r = corrcoef(X)

\param:**

  X:这个矩阵X的每一列看做一个向量

\return:**

  r: 相关系数矩阵。返回每两列之间的相关系数组成的矩阵,对称阵,对角为方差,一个向量的方差就是对向量的每个数求var。

  注意使用时不必对设计阵做标准化处理。因为我们实际要求的是标准化变量的协方差矩阵,而就是原设计阵的相关系数矩阵。

层次分析法

RI

% 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数
RI=[0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];

求矩阵最大特征值

%% 求A的特征向量构成V的列向量,求矩阵A的全部特征值,构成对角阵D
[V,D] = eig(A);
Max_eig = max(max(D))

判断矩阵是否是正互反矩阵

function flag = isRM(A)
    % 是否是正互反矩阵的标志变量
    flag = 1;
    if all(diag(A)==1)&&all(A(:)>0)
        for i = 1:size(A,1)
            for j = 1:size(A,2)
                if(A(i,j)~=1/A(j,i))
                    flag = 0;
                end
            end
        end
    else
        flag = 0;
    end
    if flag==1
        disp('该矩阵是正互反矩阵');
    else
        disp('该矩阵不是正互反矩阵');
    end
end

获取矩阵的对角元素

% 返回包含主对角线上向量A的元素的对角矩阵
diag(A)

创建对角矩阵

v = [2 1 -1 -2 -5];
% 使用 diag 创建一个包含 v 在主对角线上的元素的矩阵。
D = diag(v)

相关性模型

描述性统计

微分方程

求解析解

dsolve('y-Dy=2*x','x')  % 这里要指定自变量为x
% 2*x + C1*exp(x) + 2  (这里的C1表示任意常数,有时候也会出现C2 C3等)
dsolve('y-Dy=2*x')  % 如果不指定自变量的话,会默认自变量为t,x会看成一个常数
% 2*x + C2*exp(t)

%% 如果微分方程中还有其他的未知参数
dsolve('y-Dy=a*x','x')  % a是一个未知的参数

%% 如果微分方程有已知条件 y(0)=3
dsolve('y-Dy=2*x','y(0)=3','x')

%% 如果微分方程已知多个条件
dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x') 

求数值解

ode45()

Tips

  • 量纲不同的数据要进行标准化,消除不同指标量纲的影响

  • 代码开始记得加clear,clc初始化

  • 批量生成变量

    % 批量生成变量
    for i = 1:10
       generateVar = strcat('w',num2str(i),'=',num2str(i))
       eval(generateVar)
    end
  • plot绘制多个图形的时候加上figure(n)标签,防止前面的被覆盖

文章作者: MarkGosling
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 MarkGosling !
  目录