matlab 矩阵矢量化编程
来源:互联网 发布:python运算符优先级 编辑:程序博客网 时间:2024/09/21 09:00
如我们想验证:
其中
% 循环的做法T = zeros(size(X));for i = 1:size(X, 2), T = T+X(:, i)*X(:, i)';end% 矩阵运算的做法i = 1:size(X, 2);X(:, i)*X(:, i)'
1. 避免使用判断,避免使用循环
x = -5:.001:5;sigma = 0.75;y = zeros(size(x));y = (1-(x/sigma).^2).^2/2;y(abs(x)>sigma)=0;plot(x, y)
matlab有强大的布尔索引,python还有强大的list comprehension呢,虽然接下来的python代码并未使用list comprehension,这里只是想说,语言的存在是有其存在的合理性的,大家各有其适定的场所:
import numpy as npimport matplotlib.pyplot as plts = .75x = np.arange(-5, 5, .001)y = np.where(abs(x) < s, (1-(x/s)**2)**2/2, 0)plt.plot(x, y, c='r', lw=2)plt.show()
2. 创建对角对阵
根据向量创建对角矩阵:
>> diag([1/2 1/3 1/4])ans = 0.5000 0 0 0 0.3333 0 0 0 0.2500
diag
有多份重载,
- (1)根据一维向量创建对角矩阵
- (2)提取矩阵的对角线元素为一维向量(列向量)
3. 找不同
function a = sigmoid(z)a = 1/(1+exp(-z));endfunction a = sigmoid(z)a = 1./(1+exp(-z));end
二者唯一的不同正在于,做除法运算时,上边的函数没有点,下边的函数有点,这就导致了,第一个函数不可以接受向量或者矩阵,而第二个函数可以。
4. Rosenbrock function
f = sum(100*(x(2:end)-x(1:end-1).^2).^2+(1-x(1:end-1)).^2);
4. 三维矩阵的索引
patches = zeros(patchSize*patchSize, numPatches);for i = 1:numPatches, rnd_patch = images(row_idx(i):row_idx(i)+patchSize-1, col_idx(i):col_idx(i)+patchSize-1, img_idx(i)); patches(:, i) = rnd_patch(:);end
改造为矢量形式:
patches = reshape(images(row_idx:row_idx+patchSize-1, col_idx:col_idx+patchSize-1, img_idx), patchSize*patchSize, numPatches);
0 0
- matlab 矩阵矢量化编程
- 1.2 对象、矩阵与矢量化编程
- matlab 矢量化编程(二)—— 使用 meshgrid
- matlab 矢量化编程(一)—— 计算 AUC
- EPI_H/EPI_V(边缘保持指数,matlab 矢量化编程)
- MATLAB代码矢量化指南
- MATLAB代码矢量化指南
- 矢量化编程
- 矢量化编程
- 矢量化编程
- 如何矢量化编程
- matlab 矢量化编程(四)—— 标量函数转化为能够处理矢量的函数
- matlab 矢量化编程(三) —— 软阈值函数
- MATLAB基本操作(九):可视化矩阵的矢量场quiver函数
- MATLAB基本操作(九):可视化矩阵的矢量场quiver函数
- UFLDL矢量化编程练习:翻译
- UFLDL矢量化编程练习:遇到问题
- Stanford UFLDL教程 矢量化编程
- poj之旅——3050
- 基本数学问题
- Ubuntu的复制粘贴操作及常用快捷键
- 图论-最短路-dijkstra算法
- 实现进度条效果
- matlab 矩阵矢量化编程
- luat通过协程实现网络数据加载完毕后显示界面
- 第10周项目3-警察和厨师(2)
- struts2(十)之JSON基础
- ssh是sessionFactory为null
- js--String对象方法属性整理
- bzoj4034 T2 【树链剖分+线段树】
- 摘]【PL/SQL Developer连接MS SQL Server的方法】
- 图论-最短路-floyd