矩阵

WebGL多模型光照综合实例

假如想象 提交于 2020-02-05 04:36:43
原文地址: WebGL多模型光照综合实例 WebGL是一个非常的接近硬件底层的光栅化API, 从非常类似C/C++风格的API调用方式就可以看出来, 习惯了高级语言的我们会觉得很不友好,觉得特别繁琐. 这个也是很多人觉得WebGL难的原因之一. 如果我们要使用WebGL做一些项目,毫无疑问要么使用Three.js之类的3D库, 要么需要对原生的API进行封装. 这段时间查看了一些WebGL工具库的源代码, 参考封装出了一个简单的工具库,这样往后用WebGL做小项目就方便多了. 经过前面章节的学习, WebGL的知识点掌握的差不多了, 终于到了做特效和Demo的阶段了,来看一下这节实现的特效: WebGL多物体多光源场景 内容大纲 实现图形绕坐标原点旋转, 同时给所有的物体增加环境光, 漫反射, 高光. 其中旋转功能使用矩阵复合变换实现; 光照部分比较复杂,实现了多个光源照射. 着色器 模型变换 着色器 顶点着色器 代码很简单,逐顶点传入坐标,法向量矩阵,模型矩阵,mvp矩阵. attribute vec4 a_position; attribute vec4 a_normal; uniform mat4 u_modelMatrix; uniform mat4 u_normalMatrix; uniform mat4 u_mvpMatrix; varying vec3 v

Toeplitz Matrix 托普利兹矩阵

社会主义新天地 提交于 2020-02-05 00:13:25
Toeplitz Matrix 托普利兹矩阵 Toeplitz矩阵(diagonal-constant matrix),指矩阵中每条自左上至右下的斜线上的元素相同。形如: 1234 5123 6512 9651 我是在学习deconvolution 时遇到的。leetcode 有一道题。解法二比较方便:按照矩阵通常的遍历方式(左上到右下)遍历矩阵,每个元素与右下元素比较是否一样,少遍历一行和一列即可。 参考 如何理解深度学习中的deconvolution networks [LeetCode] Toeplitz Matrix 托普利兹矩阵 来源: CSDN 作者: 七爷OK 链接: https://blog.csdn.net/weixin_32820767/article/details/104172123

java学习之路:9.一,二维数组创建初始化

依然范特西╮ 提交于 2020-02-05 00:11:13
写在前面: 大家好,我是 花狗Fdog ,来自内蒙古的一个小城市,目前在泰州读书。 很感谢能有这样一个平台让我能够在这里分享所学所感。 我喜欢编程,喜欢代码,喜欢去做一个程序员。 努力学习,争取多年后,给亲人更好的生活。 QQ / WX:2506897252 欢迎交流。 文章目录 1.一维数组 (1)声明一维数组 (2)初始化一维数组 2.二维数组 (1)声明二维数组 (2)初始化二维数组 所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。 1.一维数组 (1)声明一维数组 数组元素类型 数组名字[] 数组元素类型[]数组名字 java不像C语言一样,声明数组后,需要自己使用new分配内内存。 int arr [ ] ; //声明数组 String str [ ] ; int arr [ ] = new int [ 4 ] ; //为数组分配内存 Strint str [ ] = new String [ 4 ] ; //声明数组的同时分配内存 int arr [ ] = new int [ 4 ] ; //声明并分配是常用做法 (2)初始化一维数组 int arr [ ] = new int [ ] { 1 , 2 , 3 , 4

马氏距离的深入理解

徘徊边缘 提交于 2020-02-04 11:53:50
转自: http://www.cnblogs.com/kevinGaoblog/archive/2012/06/19/2555448.html 对于马氏距离,本人研究了一下,虽然看上去公式很简单的,但是其中存在很多模糊的东西,例如有很多教科书以及网络上的简要说明,下面以维基百科作为引用: 马氏距离是由印度统计学家马哈拉诺比斯( P. C. Mahalanobis )提出的,表示数据的 协方差 距离。它是一种有效的计算两个未知 样本集 的相似度的方法。与 欧氏距离 不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。 对于一个均值为 , 协方差矩阵 为Σ的多变量矢量 ,其马氏距离为 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量 与 的差异程度: 如果协方差矩阵为单位矩阵,马氏距离就简化为欧式距离;如果协方差矩阵为对角阵,其也可称为正规化的马氏距离。 其中σi是xi的 标准差 。 对于上述的马氏距离,本人研究了一下,虽然看上去公式很简单的,但是其中存在很多模糊的东西,为什么马氏距离是一种考滤到各种特性之间的联系并且是尺度无关的?为什么可以使用协方差矩阵的逆矩阵去掉单位而使之尺度无关。基于此,以下是个人的一些想法。 1

从原理到落地,七大维度读懂协同过滤推荐算法

感情迁移 提交于 2020-02-04 11:16:54
转载 AI科技大本营 最后发布于2019-08-09 19:52:18 阅读数 195 收藏 展开 作者丨gongyouliu 来源 | 大数据与人工智能 导语:本文会从协同过滤思想简介、协同过滤算法原理介绍、离线协同过滤算法的工程实现、近实时协同过滤算法的工程实现、协同过滤算法应用场景、协同过滤算法的优缺点、协同过滤算法落地需要关注的几个问题等7个方面来讲述。希望读者读完本文,可以很好地理解协同过滤的思路、算法原理、工程实现方案,并且具备基于本文的思路自己独立实现一个在真实业务场景中可用的协同过滤推荐系统的能力。 作者在《 推荐系统产品与算法概述 》这篇文章中简单介绍了协同过滤算法。协同过滤算法是在整个推荐系统发展史上比较出名的算法,具备举足轻重的地位,甚至在当今还在大量使用。本篇文章作者会详细讲解协同过滤推荐算法的方方面面,这里所讲的也是作者基于多年推荐系统研究及工程实践经验的基础上总结而成,希望对大家学习协同过滤推荐算法有所帮助,提供一些借鉴。在正式讲解之前,先做一个简单定义。本文用“ 操作过” 这个词来表示用户对标的物的各种操作行为,包括浏览、点击、播放、收藏、评论、点赞、转发、评分等等。 一、协同过滤思想简介 协同过滤,从字面上理解,包括协同和过滤两个操作。所谓协同就是利用群体的行为来做决策(推荐),生物上有协同进化的说法,通过协同的作用,让群体逐步进化到更佳的状态

求二维数组的鞍点

限于喜欢 提交于 2020-02-04 08:23:28
求二维数组的鞍点:即该位置上的元素在该行最大、该列最小,也可能无鞍点。 #include<stdio.h> #include<ctype.h> #include <stdlib.h> int main(void){ int n; printf("请输入魔方阵n的值:"); scanf("%d",&n) ; fflush(stdin); //用scanf获取输入值的时候 值还没有立即赋给变量 而是在缓冲区,需要手动fflush刷新一下 int str[n][n]; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf("%d",&str[i][j]); } } for(int i=0;i<n;i++){ int rs=0; int k=0; for(int j=0;j<n;j++){ if(str[i][j]>rs){ rs = str[i][j]; k=j;//可得出str[i][k]为最大值 } } int flag =0; for(int m=0;m<n;m++){ if(str[m][k]<str[i][k]){ flag=1; continue; } } if(flag==0){ printf("%d\n",str[i][k]); } } if(flag!=0){ printf("no exist"); } return 0;

SLAM

情到浓时终转凉″ 提交于 2020-02-04 02:23:57
1、SLAM题目 什么是闭环检测?常用的方法有哪些?你用的哪种方法?有没有创新? 解释一下Gauss-Netwon和LM算法。 熟悉Ceres优化库吗?说一下。 描述(扩展)卡尔曼滤波与粒子滤波,你自己在用卡尔曼滤波时遇到什么问题没有? 除了视觉传感,还用过其他传感吗?比如GPS,激光雷达。。。 什么是紧耦合、松耦合?优缺点。 你认为室内SLAM与自动驾驶SLAM有什么区别? 地图点的构建方法有哪些? 如果对于一个3D点,我们在连续帧之间形成了2D特征点之间的匹配,但是这个匹配中可能存在错误的匹配。请问你如何去构建3D点? RANSAC在选择最佳模型的时候用的metric是什么? 除了RANSAC之外,还有什么鲁棒估计的方法? 有哪几种鲁棒核函数? 3D地图点是怎么存储的?表达方式? 给你m相机n个点的bundle adjustment。当我们在仿真的时候,在迭代的时候,相机的位姿会很快的接近真值。而地图点却不能很快的收敛这是为什么呢? LM算法里面那个 是如何变化的呢? 说一下3D空间的位姿如何去表达? 李群和李代数的关系。 求导 给你一个H高W宽的图像或者matrix,问如何去访问每一个元素,是先访问行呢?还是先访问列?跟缓存还有关系~ 写出单目相机的投影模型,畸变模型。 说一个自己熟悉的SLAM算法,Lidar/Visual slam,说优缺点。 读Maplab

C# 二维数组行列遍历

会有一股神秘感。 提交于 2020-02-04 01:07:14
C#学习 C#基础 二维数组行列遍历 属性 方法 C#基础 二维数组行列遍历 图片: 属性 int count1 = student.Length;//获取到的是整个二维数组的长度,所有元素长度总和 int row = student.Rank;//获取维数,这里指行数 方法 int col = student.GetLength(1);//获取指定维度中元素的个数,即列数了。 int col2 = student.GetUpperBound(0) + 1;//获取指定维度的索引上限,在加上一个1就是总数,这里表示二维数组的行数 来源: CSDN 作者: 十五啊十五 链接: https://blog.csdn.net/Zhangl15/article/details/104159941

Linear algebra3---duality1

非 Y 不嫁゛ 提交于 2020-02-03 17:50:25
1.Introduction 第一部分和第二部分已经解决了方程组Ax=b的求解问题,接下来需要深入研究vector和matrix的属性,向量和矩阵能表示特殊的转换。 2.几何投影 有三种方式表示几何投影: 2.1 dot product 在高中我们已经学过了dot product 表示投影, d o t   p r o d u c t 还 具 有 互 换 性 : 单 位 向 量 w ⃗ 和 v ⃗ 的 相 互 投 影 是 一 致 的 \color{red}dot \, product还具有互换性:单位向量\vec{w}和\vec{v}的相互投影是一致的 d o t p r o d u c t 还 具 有 互 换 性 : 单 位 向 量 w 和 v 的 相 互 投 影 是 一 致 的 。 2.2 向量的duality 左 边 的 向 量 可 以 看 成 是 将 ( i ^ , j ^ ) 变 换 成 ( 2 i , 3 i ) 的 变 换 矩 阵 \color{red}左边的向量可以看成是将(\hat{i}, \hat{j})变换成(2i, 3i)的变换矩阵 左 边 的 向 量 可 以 看 成 是 将 ( i ^ , j ^ ​ ) 变 换 成 ( 2 i , 3 i ) 的 变 换 矩 阵 , 问题是: [2, 3]将基向量(i, j)投影在了x轴上,如果是投影在任意直线上

c++学习笔记(五)

試著忘記壹切 提交于 2020-02-03 13:40:49
数组作为函数参数 定义 数组可以作为函数的参数使用,进行数据传送。 数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参和实参使用。 1、数组元素作为函数实参 数组元素就是下标变量,它与普通变量并无区别。因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传递给形参,实现单向的值传递。 2、数组名作为函数参数 注:(1)与数组元素作为函数参数不同的是,用数组名作为函数参数时,要求形参与相对应的实参都必须是类型相同的数组,否则会发生错误。 (2)用数组名作为函数参数时,并不是进行值的传递,即不是把实参数组的每一个元素的值都赋与形参数组的各个元素。因为实际上形参数组并不存在,编译系统并不为形参数组分配内存。 数据的传递:数组名就是数组的首地址。因此在数组名作为函数参数时所进行的传递只是地址的传递,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也等于有了实际的数组,即实参与形参有一段共用的内存空间。 二维数组作为函数参数 规定:如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,数组的行数没有太大关系,可以指定也可以不指定。 因为函数调用时传递的是一个指针,它指向由行向量够成的一维数组。 因此二维数组作为函数参数正确写法如下所示: void F(int a