学习笔记16—Matlab 基础集

1、常用相关 [r, p] = corr(X,Y), [r, p] = partialcorr(X,Y, Z) , 其中Z是协变量。

2、TD_age = importdata('F:\BrainAging\result\NYU_SDSU_TD_age.mat'); 注意:红色标记处必须加上后缀。

3、代码智能缩进:Ctrl + I

4、求上三角矩阵函数:triu(A,k)%求矩阵A的第K条对角线以上的元素(k = 0 表示包含对角线)。
     求下三角矩阵函数:tril(A,k)%求矩阵A的第K条对角线以下的元素(k = 0 表示包含对角线)。

5、提取矩阵(A)的值:

    1)按列:B = A(:),B = A(:,k) 或者用reshape函数 ----> 按列取下/上三角部分:
        %% 取下三角矩阵(按列,能将零值取出来)
        myMatrix = fix(5*rand(5,5))+1;
        myMatrix2 = myMatrix';%转置
        yourWant = myMatrix(logical(tril(ones(size(myMatrix2)))));%取下三角形
       或者:ind = find(tril(A,-1)); B= A(ind)---->按列取出非零值;
       %% 取上三角矩阵(按列,能将零值取出来)
       myMatrix = fix(5*rand(5,5))+1;
       yourWant = myMatrix(logical(triu(ones(size(myMatrix)))));

    2)按行:B = A(k,:)

    3)按对角:cc = cell2mat(arrayfun(@(k) diag(A,k),1:3,'un',0)')';

6、计算相关有:[h,p] = corr(X,Y); [h, p] = partialcorr(X,Y, cov);

7、disp显示函数用法:disp(i)或者disp([‘my test=’,num2str(test)])

8、matlab中cell定义和赋值:w = {};w(i,:)={model.w};

9、MATLAB,在cell中取数据:

   如下,node是一个2x1的cell,每个cell中有矩阵16x23

   

  提取第一个cell中,第二行第三列的元素

  

  使用 

  node{1,1}(2,3);

  结果:
  ans =
     -0.8593

10、

  sort(A)若A是向量不管是列还是行向量,默认都是对A进行升序排列。sort(A)是默认的升序,而sort(A,'descend')是降序排序。
  sort(A)若A是矩阵,默认对A的各列进行升序排列
  sort(A,dim)
  dim=1时等效sort(A)

 dim=2时表示对A中的各行元素升序排列

 

   看下面的例子

 

   >> A=magic(3)
  A =
  8 1 6
  3 5 7
  4 9 2

  >> sort(A)
  ans =
  3 1 2
  4 5 6
  8 9 7

  >> sort(A,1)
  ans =
  3 1 2
  4 5 6
  8 9 7

  >> sort(A,2)
  ans =
  1 6 8
  3 5 7
  2 4 9

11、

   按矩阵的某一行排序:

  a =

  5 7 8
  4 6 1
  8 0 7

  >> sortrows(a,3)

  ans =

  4 6 1
  8 0 7
  5 7 8

12、Matlab中排列组合函数

  1. perms(x):在程序命令框中输入一个向量x,perms(x) 给出向量x的所有排列。

     
  2. combntns(x,m):在程序中输入一个向量x与需要的元素个数m,combntns(x,m)给出了从包含n个元素的向量x中选取m个元素的组合。

     
  3.  nchoosek(x,m):在程序中输入一个向量x与需要的元素个数m,nchoosek(x,m)给出了从包含n个元素的向量x中选取m个元素的组合。
     

13、标准化

     1. Min-max 标准化

    新数据=(原数据-极小值)/(极大值-极小值)

    标准化以后,X中元素的取值范围是[0,1]。

X = (X-Xmin))./(Xmax-Xmin);

   2. z-score 标准化

新数据=(原数据-均值)/标准差

    标准化以后,X中元素的取值范围为实数。

% Zscore normalize
X=zscore(X);
   原文:https://blog.csdn.net/qq_29259155/article/details/62884807?utm_source=copy

14、save存储:

        save(['E:\hcc\DTI\test\','eddy_corrected_data_hcc_111.txt'], 'D', '-ascii')
        save eddy_corrected_data_hcc.txt D -ascii

15、提取cell中某行某列的值:

      如下,node是一个2x1的cell,每个cell中有矩阵16x23

     

     提取第一个cell中,第二行第三列的元素

   

   使用 node{1,1}(2,3);结果:ans =  -0.8593

16、matlab 随机颜色矩阵:mat2cell(0+.75*rand(L,3),ones(1,L),3 )

17、matlab中,把一组数据顺序颠倒:行向量就用fliplr函数 列向量就用flipud函数

18、matlab 中读取结构体数据(average_networks是一个结构体):

   hh = importdata('F:\BrainAging\average_networks.mat');
   fun = hh.func_network;
   BHA_stru_originalMat = hh.struct_network;

19、matlab 读取结构体中某一个矩阵: load([path,'\',temp(i).name],'mean_FA'), 其中,temp(i).name] 是一个结构体,如图:

20、将多个二维矩阵组合成一个三维矩阵:使用 cat 函数。

21、输出格式:( %d 整数, %e实数:科学计算法形式, %f实数:小数形式, %g由系统自动选取上述两种格式之一, %s输出字符串 )

    

22、Matlab 字体的选择(在preferences设置): “current folder” 和 “workspace” ---->  Microsoft YaHei UI,"Editor" and " Command Window" ----> Monospaced

23、python 保存成.mat格式文件:

        import numpy as np

       import scipy.io as sio

       sio.savemat('all_SCN_ASD_group_binary.mat',{'consensusNet':consensusNet})

24、save 存储在特定路径下:save([inPath,'rsq_asd_adol.mat'],'rsq');

25、matlab 中常用字体:sansSerif 和 Monospaced,

 

 

 26、全为零的列(行)删除array (:,all(array == 0, 1)) = []; %全零列设为空,或者 array (all(array == 0, 2),:) = []; %全零行设为空,即可去掉。

27、出现零的列(行)删除array(:,array(:,1)==0) = [];%全零列设为空,或者 array(array(:,1)==0,:) = [] %全零行设为空。

28、生成既包含字符,又包含数字的格式,只能是cell, 可以通过excel列好数据,然后用命令:[num,txt,raw] = xlsread('E:\structural_network\abc.xlsx','sheet1');

29、Matlab中怎么把一维数组逆序排列,用 FLIPLR()函数;

30、Matlab的std()函数的使用:

    y=std(x) 算出x的标准偏差。 x可以是vector或者一个matrix矩阵。
    若x是vector,则y是算x的标准偏差。
    若x是matrix,则y是个vector,存放的是算每一列/行的标准偏差。 std (x, flag,dim)
    flag表示标注公差时是要除以n还是n-1
    flag==0.........是除以n-1
    flag==1.........是除以n
    dim表示维数
    dim==1..........是按照列分
    dim==2..........是按照行分 若是三维的矩阵,dim==3就按照第三维来分数据
    默认std格式是std(x,0,1);
    >>x=[ 1 2 3 4; 4 5 6 1 ]
    >>std(x)
   ans =

         2.1213 2.1213 2.1213 2.1213

    >> std(x,1)
    ans =
         1.5000 1.5000 1.5000 1.5000
    >> std(x,0,2)
    ans =
         1.2910 
         2.1602
 
    >> std(x,1,2)
   ans =
         1.1180
         1.8708
30、Matlab的squeeze()函数的使用:
A=rand([3 1 1 2])
squeeze(A)
matlab常用函数之squeeze函数

 31、如果data是一个cell, 如果取出里面的值就用"{}"符号(比如:data{1,1}),如果取出其值且保证结构不变就用"()" (比如:data(1;1))。

32、如果.mat文件太大,可以在matlab中将保存格式修改成“matlab version 7.3 or later”

33、matlab 取矩阵中非零值组成一个向量:

A=randi([0 4],4) 

A =
4 2 1 0
2 3 2 3
0 4 0 2
0 3 0 0

B=nonzeros(A)'
B = 4 2 2 3 4 3 1 2 3 2

34、matlab 合并两个元组(i.e., cell):

a=cell(1,2);
a{1}=zeros(1,2);
a{2}=zeros(2,2);

b=cell(1,2);
b{1}=zeros(1,3);
b{2}=zeros(1,3);
a
a=[a,b]   %注意 这里是方括号

 

35、怎样去掉矩阵的一维。1×4×5变为4×5 : Y = squeeze(X);

36、解压.gz的压缩文件:gunzip(filename, ourdir),比如: gunzip(E:\28853\B0.nii.gz, E:B0Img\28853);

37、画二维矩阵图:imagesc(mat);

38、MATLAB 坐标轴刻度等间距显示与 控制坐标轴刻度小数位数

 

 

 

 

 

 

posted @ 2018-09-17 00:05  何弈  阅读(1413)  评论(0编辑  收藏  举报
你好