matlab学习笔记(持续更新)

开文是为了给自己一个学习过程的记录。
现在算法,编程,学习,生活等各条线穿插并行,很多东西用过就忘,下次遇到又要重新找一遍,费时费力。我本来也是个稀里糊涂的人,用过一次,似是而非的懂了,模模糊糊的记住了。结果重新回想的时候调出来的是清晰的“哎?我用过啊,是啥来着?”的感觉,更让人抓破头皮的崩溃。干脆,还是“好记性不如烂笔头”吧,而且,也能有点成就感,可以发出感叹:学了不少东西啊~~

11/9/2019

  1. dir 得到struct型,文件夹的所有文件的名字等基本信息
    foldername = ‘wavwrite_clean_2sources/’;
    fileList=dir(foldername );
    xn1 = fileList(1).name;

  2. strsplit 分割字符串
    nameList = strsplit(xn1,’_’);
    sn1 = [char(nameList(1)) ‘.WAV’];%分割之后是cell类型,需要转换为char类型

  3. strcmp 字符串比较
    strcmp(sn1(1),‘S’)==1

  4. A=full(sparse(alphaind,deltaind,tfweight,abins,dbins));
    sparse 神奇的函数:可以减少存储空间,可以构造矩阵(i,j)=k,可以把矩阵相同的(i, j)处的值相加。
    语法
    S = sparse(A)
    S = sparse(m,n)
    S = sparse(i,j,v)
    S = sparse(i,j,v,m,n)
    S = sparse(i,j,v,m,n,nz)
    说明
    S = sparse(A) 通过挤出任何零元素将满矩阵转换为稀疏格式。如果矩阵包含许多零,将矩阵转换为稀疏存储空间可以节省内存。
    S = sparse(m,n) 生成 m×n 全零稀疏矩阵。
    S = sparse(i,j,v) 根据 i、j 和 v 三元组生成稀疏矩阵 S,以便 S(i(k),j(k)) = v(k)。max(i)×max(j) 输出矩阵为 length(v) 非零元素分配了空间。sparse 将 v 中下标重复(在i 和 j 中)的元素加到一起。如果输入 i、j 和 v 为向量或矩阵,则它们必须具有相同数量的元素。参数 v 和/或 i 或 j 其中一个参数可以是标量。
    S = sparse(i,j,v,m,n) 将 S 的大小指定为 m×n。
    S = sparse(i,j,v,m,n,nz) 为 nz 非零元素分配空间。可以使用此语法为构造后要填充的非零值分配额外空间。
    示例

A = eye(10000); S = sparse(A);

A矩阵使用 800 MB 内存。采用稀疏形式时,同一矩阵只使用约 0.25 MB 内存。

S = sparse(10000,5000)

S =
All zero sparse: 10000x5000

i = [900 1000];
j = [900 1000];
v = [10 100];
S = sparse(i,j,v,1500,1500) %根据 i、j 和 v 三元组生成 1500×1500 的稀疏矩阵。

S =
(900,900) 10
(1000,1000) 100
当指定的大小大于 max(i)×max(j) 时,sparse 函数会使用额外的零值行和列填充输出。

S = sparse(1:10,1:10,5,20,20,100);

创建一个由 10 个非零值构成的稀疏矩阵,但实际上为此矩阵分配可以存储 100 个非零值的空间。
使用重复的下标将值累加到单一稀疏矩阵中,如果不如此的话,可能要使用一个或多个循环。

i = [6 6 6 5 10 10 9 9]';
j = [1 1 1 2 3 3 10 10]';
v = [100 202 173 305 410 550 323 121]';

创建一个数据列向量和两个下标列向量。
并排显示下标和值。
[i,j,v]
ans = 8×3
6 1 100
6 1 202
6 1 173
5 2 305
10 3 410
10 3 550
9 10 323
9 10 121
使用 sparse 函数将具有相同下标的值累加。

S = sparse(i,j,v)

S =
(6,1) 475
(5,2) 305
(10,3) 960
(9,10) 444

  1. full
    A = full(S) 将稀疏矩阵 S 转换为满存储结构,这样 issparse(A) 返回逻辑值 0 (false)。
    创建一个随机稀疏矩阵。
rng default %for reproducibility
S = sprand(8,8,0.3)

S =
(2,1) 0.0344
(7,1) 0.4456
(8,1) 0.7547
(2,2) 0.4387
(4,3) 0.7655
(7,3) 0.6463
(8,4) 0.2760
(1,6) 0.9502
(5,6) 0.1869
(8,6) 0.6797
(3,7) 0.3816
(4,7) 0.7952
(8,7) 0.6551
(6,8) 0.4898
(7,8) 0.7094

将矩阵转换为满存储。矩阵的 MATLAB 显示会反映新存储格式。

A = full(S)

A = 8×8

     0         0         0         0         0    0.9502         0         0
0.0344    0.4387         0         0         0         0         0         0
     0         0         0         0         0         0    0.3816         0
     0         0    0.7655         0         0         0    0.7952         0
     0         0         0         0         0    0.1869         0         0
     0         0         0         0         0         0         0    0.4898
0.4456         0    0.6463         0         0         0         0    0.7094
0.7547         0         0    0.2760         0    0.6797    0.6551         0
  1. mesh contour
  2. Inf
    bestsofar=Inf*ones(size(tf1));
  3. 利用布尔值筛选数据
   amask=(abs(alpha)<maxa)&(abs(delta)<maxd); %找到满足条件的数据的位置
   alphavec=alpha(amask);  %取出数据,删除无用的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值