
matlab
文章平均质量分 84
五道口纳什
wx公众号/B站:五道口纳什
展开
-
matlab控制图像的边界(margin),subplot的间距(gap)
使用subplot(row, col, i)创建的子图,matlab会隐式地调整它们的间距以及它们和整个figure的边距,以达到它所认为的美观或者合理的设置,然而如果我们想根据需求设置合理的间距以及边距,该怎么定制呢?这里提供一个函数(是在没必要把时间花费在这种繁琐的格式上):function ha = tight_subplot(Nh, Nw, gap, marg_h, marg_w)% tig原创 2015-11-13 17:17:35 · 47469 阅读 · 9 评论 -
灰度共生矩阵GLCM及其matlab实现
Prerequisites概念计算方式对于精度要求高且纹理细密的纹理分布,我们取像素间距为d=1d = 1,以下是方向的说明:我们来看,matlab内置工具箱中的灰度共生矩阵的生成函数graycomatrix(gray-level co-occurrence matrix)对方向的说明: 如上图所示,方向是在每一个像素点(pixel of interest)的邻域(当然,边界点除外)中获得的,原创 2015-11-18 10:50:20 · 28611 阅读 · 4 评论 -
matlab 判断两个矩阵是否相等
数学意义的相等all(A(:) == B(:))isequal(A, B)但须注意的是:B = A,未必能保证 isequal(A, B)返回真,因为如果 A 中包含NaN,因为按照定义,NaN ~= NaN>> A = [1, NaN]>> B = A>> isequal(A, B)0>> NaN == NaN0浮点数相等对于浮点数矩阵,判断两个矩阵是否精确相等意义不大,真正有意义的原创 2016-02-22 15:53:58 · 50479 阅读 · 0 评论 -
matlab 解析 mnist 数据集
mnist database(手写字符识别) 的数据集下载地:http://yann.lecun.com/exdb/mnist/。共有四个文件需要下载:train-images-idx3-ubyte.gz,训练集,共 60,000 幅(28*28)的图像数据;train-labels-idx1-ubyte.gz,训练集的标签信息(取值为 0-9),60,000*1t10k-images-idx原创 2016-04-28 09:38:11 · 13341 阅读 · 6 评论 -
utilities(matlab)—— 多元函数的数值梯度
多元函数的数值梯度,用于校验多元函数的解析解(或者书写是否有误)的准确性。function numgrad = computeNumericGradient(J, theta)epsilon = 1e-4;n = size(theta, 1);numgrad = zeros(n);for i = 1:n, tmp1 = theta; tmp2 = theta; tm原创 2016-05-08 10:04:56 · 5260 阅读 · 0 评论 -
Matlab Tricks(三)—— subplot 的组织
m = 4; n = 5; % m, n 均可设置for i = 1:m*n; subplot(m, n, i), imshow(...)end原创 2016-05-10 17:23:45 · 976 阅读 · 0 评论 -
utilities(matlab)—— minFunc
minFunc minFunc is a Matlab function for unconstrained optimization(无约束最优化) of differentiable real-valued multivariate functions (可微分实值多元函数)using line-search methods(线性搜索).原创 2016-05-09 11:16:22 · 5142 阅读 · 0 评论 -
Matlab Tricks(四)—— remove DC
% remove DCdata = bsxfun(@minus, data, mean(data)); % 一个矩阵减去一个行向量, % 会对该行向量在列的方向进行 broadcast(广播)、扩散原创 2016-05-10 23:35:59 · 1730 阅读 · 0 评论 -
utilities(matlab)—— l2row/l2col
对一个矩阵在行的方向进行 normalize,也即每一行的二范数归一化为 1。简单脚本实现>> X = magic(3);>> N = sqrt(sum(X.^2, 2) + 1e-8);>> X = X ./ (N*ones(1, 3));函数function [Y, N] = l2row(X)N = sqrt(sum(X.^2, 2) + 1e-8);Y = X ./ (N*ones(1原创 2016-05-10 23:53:28 · 1270 阅读 · 0 评论 -
matlab 可视化 —— 常用绘图函数
(1)imhist:histogram,统计学意义上的直方图1. stem 茎叶图原创 2016-04-17 09:31:18 · 1425 阅读 · 0 评论 -
bsxfun 的理解
(1) 第一个参数是二元算子(2) 执行的逐元素(element-wise)的运算(3) 如果是一个行向量和一个矩阵进行二元运算,则会首先把行向量broadcast(广播、扩散)直至和矩阵的维度匹配。同理,一个列向量和一个矩阵二元运算也是如此。原创 2016-05-11 15:35:56 · 1837 阅读 · 0 评论 -
使用 matlab 数字图像处理(一)—— 归一化直方图
I = imread('pout.tif'); % matlab 自带图像[cnts, x] = imhist(I, 32);[m, n] = size(I)prob = cnts / m / n;stem(x, prob)原创 2016-04-17 09:39:28 · 12924 阅读 · 0 评论 -
使用 matlab 数字图像处理(八)—— 画圆
0:黑色,1:白色;h = 256; w = 256; r = 70; % 分别表示:高,宽,内部圆的半径I = ones(h, w);[x, y] = meshgrid(1:w, 1:h); % 注意 meshgrid 参数的顺序I(((x-ceil(w/2)).^2+(y-ceil(h/2)).^2) <= r^2) = 0;原创 2016-04-17 16:28:34 · 8709 阅读 · 1 评论 -
matlab 复矩阵共轭
A 为复矩阵A = 1.0000 + 0.0000i 2.0000 - 3.0000i 3.0000 + 0.0000i 4.0000 + 0.0000i 4.0000 + 0.0000i 3.0000 + 4.0000i 2.0000 + 5.0000i 1.0000 + 0.0000i 7.0000 + 0.0000i 8.0000 + 2.0000原创 2016-04-17 20:05:42 · 13298 阅读 · 0 评论 -
Matlab Tricks(五)—— shuffle 一个矩阵
首先考虑矩阵代表的物理意义,Xd×nX_{d\times n},dd 表示特征维度,nn:表示样本个数,此时 shuffle 该矩阵,是对列进行shuffle;反之,则是对行进行 shuffle。所谓 shuffle,其实是获得一次全排列。>> d = 10; n = 100;>> X = randn(d, n);>> X = X(:, randperm(n))>> X = randn(n, d原创 2016-05-13 11:21:40 · 8033 阅读 · 0 评论 -
utilities(matlab)—— 前馈网络权值矩阵初始化方式
我们知道一个好的权值矩阵的初始化方式将会带来收敛效率的提升。本文所实现的前馈网络的权值矩阵初始化方式来源于: Xavier Glorot,Yoshua Bengio,Understanding the difficulty of training deep feedforward neural networks。normalized initialization:W∼U⎡⎣−6nj+nj+1−−−原创 2016-05-13 11:52:17 · 2414 阅读 · 0 评论 -
Matlab Tricks(六)—— 矩阵乘法的实现
>> rng('default');>> A = randi(3, 2, 3); B = randi(3, 3, 2);matlab 原生支持>> A*Bans = 11 16 12 15定义C = zeros(size(A, 1), size(B, 2));for i = 1:size(A, 1), for j = 1:size(B, 2),原创 2016-05-14 11:55:27 · 1409 阅读 · 0 评论 -
utilities(matlab)—— mat2imgcell
mat2imgcellfunction Img = mat2imgcell(D, h, w, fmt)N = size(D, 2);Img = cell(N, 1);for i = 1:N, Img{i} = reshape(D(:, i), h, w, (fmt=='gray')*1+(fmt=='color')*3)end原创 2016-01-07 15:31:08 · 1765 阅读 · 0 评论 -
matlab 编程——一些细节、常犯错误的汇总
总结matlab常见错误:1. *与.*2. 创建图像块,列序 or 行序?3. imwrite、saveas、print原创 2015-10-30 18:24:05 · 5642 阅读 · 0 评论 -
utilities(matlab)—— ZCA 白化
function [Z, Wsep, Wmix, m, U, S, V] = zca(X, portion),if nargin < 2, portion = 1;endX_org = X;rndidx = randperm(size(X, 1));X = X(rndidx(1:round(size(X, 1)*portion)), :);m = mean(X);Xc = bsxf原创 2016-05-14 20:49:18 · 2466 阅读 · 0 评论 -
Matlab Tricks( 八)—— 将 pgm 格式文件转换为 png 格式
clc; clear; close all;list = dir('./*.pgm'); % list 为结构体数组for i = 1:length(list), imwrite(imread(list(i).name), [list(i).name(1:end-3) 'png']);end原创 2016-05-14 22:59:28 · 2030 阅读 · 0 评论 -
utilities(matlab)—— PSNR 值的计算
MSE=1mn∑i=0m−1∑j=0n−1∥I(i,j)−K(i,j)∥2PSNR=10⋅log10(MAX2IMSE)=20⋅log10(MAXIMSE−−−−−√)\begin{split}&MSE=\frac1{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}\left\|I(i,j)-K(i,j)\right\|^2\\&PSNR=10\cdot \log_{10原创 2016-05-15 11:50:52 · 2095 阅读 · 0 评论 -
utilities(matlab)—— 图像加噪
AWG:Additive White Gaussianim_clean = double(imread('./lena512.png'));sigma = 25;im_noisy = im_clean + sigma * randn(size(im_clean));原创 2016-05-15 12:00:32 · 1297 阅读 · 0 评论 -
utilities(matlab)—— 合成数据(synthesis data)
两类正太分布mu = [2, 3];sigma = [1, 0; 0, 2];X1 = mvnrnd(mu, sigma, 100);plot(X1(:, 1), X1(:, 2), 'r+')hold onmu = [7, 8];X2 = mvnrnd(mu, sigma, 100);plot(X2(:, 1), X2(:, 2), '+')原创 2016-05-15 19:10:20 · 1524 阅读 · 0 评论 -
Matlab Tricks(十)—— padarray 的实现
B = padarray(A,padsize,padval,direction)其中 padval:‘circular’:循环‘replicate’:重复‘symmetric’:镜像direction:‘both’:双向(下文我们均以最为复杂的both为例进行实验)‘pre’:前向‘post’:后向‘replicate’>> A = magic(4);>> B = padarray原创 2016-05-15 22:01:10 · 1607 阅读 · 1 评论 -
utilities(matlab)—— 图像分块(image2cols、cols2image)
image2cols:图像分块function patches = image2cols(im, pSz, stride)if nargin < 3, stride = 1; % stride:表示块间的偏移endrange_y = 1:stride:size(im, 1)-pSz+1;range_x = 1:stride:size(im, 2)-pSz+1;原创 2016-05-16 10:26:24 · 2449 阅读 · 0 评论 -
Matlab Tricks(十一)—— padarray 关于边缘成镜像对称
使用 fliplr(左右),flipud (上下)翻转。matlab 提供的 padarray,其第三个参数无论是symmetric(对称),replicate(复制边缘),circular(周期)均无法实现关于边缘成镜像对称:>> A = magic(5);>> B = [fliplr(A(:, 2:3)) A fliplr(A(:, end-2:end-1))];>> C = [flipu原创 2016-05-16 10:43:57 · 2704 阅读 · 0 评论 -
matlab rem与mod 的区别
二者均有取余数的含义,区别在于近似的方式不同。modb = mod(a,m)等价与b = a - m.*floor(a./m) % floor 表示向下取整; % floor(.1) == 0 % floor(-.1) == -1remb = rem(a, b)等价于r = a - b.*fix(a./原创 2016-05-16 17:36:59 · 1738 阅读 · 0 评论 -
utilities(matlab)—— normalize
%% ---------------------------------------------------------------function patches = normalizeData(patches)% Squash data to [0.1, 0.9] since we use sigmoid as the activation% function in the output l原创 2016-05-07 18:13:41 · 1359 阅读 · 0 评论 -
utilities(matlab)—— visualizes filters(可视化滤波器)
function [h, array] = display_network(A, opt_normalize, opt_graycolor, cols, opt_colmajor)% This function visualizes filters in matrix A. Each column of A is a% filter. We will reshape each column in原创 2016-05-08 00:29:30 · 2967 阅读 · 0 评论 -
matlab 格式化输出
fprintf('%6s%12s%12s%12s%12s\n','Iter', 'fObj','fResidue','fSparsity','fWeight');原创 2016-05-08 15:34:30 · 14872 阅读 · 0 评论 -
matlab 中的内联函数、匿名函数和函数函数
内联函数>> f = inline('x^2 + y^3')f = 内联函数: f(x,y) = x^2+y^3>> f(2, 3)31其实 inline('x^2+y^3')等价于inline('x^2+y^3', 'x', 'y') % 后续可变参数标识参数列表匿名函数语法结构为:fhandle=@(arglist) expression>> f =原创 2016-05-07 15:28:38 · 16367 阅读 · 0 评论 -
Matlab Tricks(一)—— figure(1)
如果在调用绘图函数之前,不显示地声明figure()语句,则弹出的图像窗口的标题为 Figure 1。trick 来了,如果我们在一个迭代循环体中:...imshow(...) % ⇒ figure(1)...for iteration = 1:100, ... figure(1) imshow(...)end便会看到在同一个图原创 2016-05-09 17:03:17 · 2603 阅读 · 0 评论 -
matlab 可视化 —— axis
axis:轴,复数,axes Set axis limits and appearance,设置和控制轴的范围和外观;1. 设置坐标范围x = linspace(0,2*pi);y = sin(x);plot(x,y,'-o')axis([0, 2*pi, -1.5, 1.5]) % 注意参数是一个一维矩阵,原创 2016-06-09 12:00:43 · 2155 阅读 · 0 评论 -
Matlab Tricks(十一)—— 向量的逆序输出
end 的更多用法。>> x = [1, 2, 3, 4, 5];>> x(end:-1:end-size(x, 2)+1)ans = 5 4 3 2 1原创 2016-06-28 20:25:07 · 6656 阅读 · 0 评论 -
Matlab Tricks(十二)—— 矩阵阈值化的实现
所谓矩阵阈值化,比如将矩阵中的小于某一阈值的元素全部被置零。>> A = randn(3, 4)A = 0.5377 0.8622 -0.4336 2.7694 1.8339 0.3188 0.3426 -1.3499 -2.2588 -1.3077 3.5784 3.0349>> A .* (A > 0)ans = 0.53原创 2016-07-03 16:25:16 · 6840 阅读 · 1 评论 -
使用 matlab 进行正太拟合
1. normfit 进行参数的估计[muhat,sigmahat] = normfit(data) % returns an estimate of the mean μ in muhat, % and an estimate of the standard deviation σ in sigmahat, % of the normal distribution原创 2016-07-04 15:47:57 · 2846 阅读 · 1 评论 -
matlab 交换矩阵的行和列
>> A = [1 2 3 4; 4 3 2 1; 5 6 7 8; 8 7 5 6]交换第一行,和第三行:>> A([1, 3], :) = A([3, 1], :)交换第一列,和第三列:>> A(:, [1, 3]) = A(:, [3, 1])原创 2016-06-22 23:20:35 · 24359 阅读 · 0 评论 -
matlab 文本处理
1. textread()以字符串的形式组织每一行:>> textread('**.txt', '%s', 'delimiter', '\n')原创 2016-07-21 00:06:17 · 1322 阅读 · 0 评论 -
matlab 集合操作
matlab 并未提供专门的表示集合的数据结构,仍然使用矩阵进行表示(unique() 函数去重)。intersect(A, B):交集union(A, B):并集setdiff(A, B):差集(在A不在B)setxor(A, B):异或( = setdiff(union(A, B), intersect(A, B)))ismember(A, B):是否属于原创 2016-08-01 00:03:57 · 5159 阅读 · 0 评论