matlab 实用程序片段

来源:互联网 发布:钢琴调音软件 编辑:程序博客网 时间:2024/05/23 22:08
  • 记录一次 shuffle(或者叫 permutation):

    n = 10;randorder = randperm(n);
  • abs(A) == sqrt(A.^2) ⇒ sqrt(A.^2 + 1e-8)

  • disp(A):输出矩阵

1. batch(分块机制)

totnum = 1000;batchsize = 100;numbatch = totnum/batchsize;numdim = 12;testbatchdata = zeros(batchsize, numdim, numbatch);            % 三维矩阵保存全部的 batch 信息size(testbatchdata)            % 100, 12, 10

按块访问:

for i = 1:numbatch,    data(1+(i-1)*batchsize:i*batchsize, :)end

2. 双层循环

for epoch = 1:maxepoches,    ...    for batch = 1:numbatches,        ...     endend

3. 统计一行中 0 的个数

>> A = randi([0, 1], 5, 10);>> sum(A == 0, 2)

4. 随机地选择矩阵的某些行或者某些列

% 随机地选择某些行>> A(randi(size(A, 1), k, 1), :)% 随机地选择某些列>> A(:, randi(size(A, 2), 1, k))

5. function(函数)允许传递空参进去

function [] = func(x, y, z)...end

客户端调用时:
func(x, [], z), 此时在函数 func 的内部将 y 识别为 empty,而不是不存在,也即 isempty(y) == 1(注意 func(x, , z)是不合法的)。

6. 空参空返回值的函数

function [] = checkNumericalGradient()

空参空返回值,虽然保有函数的形式,更像是一段 demo,可直接 F5 运行。

7. 两向量无量纲的距离

diff = norm(numgrad-grad)/norm(numgrad+grad);                                       % 除是为了消除量纲

8. 形成犬牙相错的排列

1     5     2     6     3     7     4

使用 circshift

n = 7;a = zeros(1, n);for i = 1:n,    a(i) = i;    a = circshift(a, [0, -1]);enda

此时要求长度必须为奇数,而不能为偶数,当长度为偶数时:

n = 1a = 5     0     6     0     7     0     8     0
0 0
原创粉丝点击