matlab如何创建元组_学习笔记16—Matlab 基础集

本文详细介绍了Matlab中如何创建元组、处理矩阵、进行数据操作,包括计算相关性、矩阵三角部分提取、排序、组合函数、标准化方法、数据存储以及常用函数的用法,例如corr、importdata、sort、cell操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

cd00ad1bde976d66cae40082621416c9.png

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

4dc3fa079529a99b2069e03c0c639485.png

使用

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中排列组合函数

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

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

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.youkuaiyun.com/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

cd00ad1bde976d66cae40082621416c9.png

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

4dc3fa079529a99b2069e03c0c639485.png

使用 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] 是一个结构体,如图:

d39bdc024ed032a46cd579dea397250f.png

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

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

a73f17e6bd786b4724bb235cf2ac3100.png

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,

1186e49a9a4f165fa1a319d67894984b.png

ff007b2a99be682c09a1ce89d920efa5.png

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)

26a252438b77f30cd83aaef2de582d54.png

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

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

b6a160b14ab7686ec57e6ccb4a7663d6.png

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]   %注意 这里是方括号

f2ecb978689d26966af03ba7aa6db8a1.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值