矩阵转置

【Unity Shader】效果公式总结

会有一股神秘感。 提交于 2019-12-14 19:01:47
a.漫反射公式: diff=C*max(0,cos<L,N>);//C是颜色和强度_LightColor0.rgb 代码: diff=max(0,dot(i.normal,i.lightDir))//i的单位向量and单位法向量 c=tex2D(tex,i.uv) _LightColor0 diff//_LightColor0表示的是场景中平行光的颜色和强度 b.高光反射公式: Spec=pow(max(0,cos(R,V),gloss))//R 单位反射向量reflect(ray,normal)函数获取,V视线单位方向向量 ,gloss光色度 代码: Spec=pow(max(0),dot(reflect(-i.lightDir,i.normal),32)) c=c**_LightColor0*(diff+Spec) 纹理 uv坐标是顶点存储了图片上的坐标 _MainTex (“Main Tex”, 2D) = “white” {} sampler2D _MainTex; float4 _MainTex_ST;//Unity中 纹理_ST来默认声明该纹理的属性_MainTex_ST.xy表示Scale, Till缩放,_MainTex_ST.zw表示Transform 偏移 o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);/

矩阵转置

蓝咒 提交于 2019-12-14 02:35:06
矩阵转置 Problem Description 输入N*N的矩阵,输出它的转置矩阵。 Input 第一行为整数N(1≤N≤100)。 接着是一个N*N的矩阵。 Output 转置矩阵。 Sample Input 2 1 2 1 2 Sample Output 1 1 2 2 # include <stdio.h> # include <stdlib.h> int main ( ) { int a [ 101 ] [ 101 ] , n , i , j ; while ( ~ scanf ( "%d" , & n ) ) { for ( i = 1 ; i <= n ; i ++ ) { for ( j = 1 ; j <= n ; j ++ ) { scanf ( "%d" , & a [ i ] [ j ] ) ; } } for ( i = 1 ; i <= n ; i ++ ) { for ( j = 1 ; j <= n ; j ++ ) { if ( j == 1 ) printf ( "%d" , a [ j ] [ i ] ) ; else printf ( " %d" , a [ j ] [ i ] ) ; } printf ( "\n" ) ; } } return 0 ; } 来源: CSDN 作者: 咕咕咕咕咕~ 链接: https://blog.csdn

矩阵的舞蹈

谁说胖子不能爱 提交于 2019-12-14 00:55:18
矩阵的舞蹈 Problem Description 矩阵是非常美妙的东西,可以用来解方程,以及解决一些图论的问题等,应用很广泛。即使没有学过线性代数,大家也一定接触过矩阵,在编程中可以理解为二维的表。 矩阵有很多操作就像舞蹈一样,如行列的置换,矩阵的转置等。今天我们只看矩阵的旋转,希望得到当前矩阵顺时针旋转90度以后得到的矩阵。 Input 输入数据的第一行是一个正整数T,代表有T组测试样例。接下来T组数据,每组数据第一行是两个整数M,N (0 < M , N < 100),分别代表矩阵的行数和列数。然后是矩阵本身,共M行,每行N个数据用空格隔开。 Output 对于每组输入的矩阵,第一行输出Case #k:(k为该组数据的序号,具体格式见样例),然后输出其旋转后的矩阵。 Sample Input 2 4 4 1 2 3 4 5 6 7 8 6 6 6 6 8 8 8 8 2 3 1 2 3 4 5 6 Sample Output Case #1: 8 6 5 1 8 6 6 2 8 6 7 3 8 6 8 4 Case #2: 4 1 5 2 6 3 # include <stdio.h> # include <stdlib.h> int main ( ) { int t , n , m , k , i , j , a [ 101 ] [ 101 ] ; scanf ( "%d"

奇异值分解SVD

可紊 提交于 2019-12-13 00:45:46
在介绍奇异值分解(SVD)之前我们先来回顾一下关于矩阵的一些基础知识。 矩阵基础知识 方阵 给定一个$ n×m $的矩阵$ A $,若n和m相等也就是矩阵的行和列相等那矩阵$ A $就是一个方阵。 单位矩阵 在线性代数中,n阶单位矩阵,是一个$ n×n $的方阵,其主对角线元素为1,其余元素为0。单位矩阵以$ mathbf { I } _ { n } $表示。 单位矩阵性质: $$ text { 1. } I _ { n } B _ { n times m } = B _ { n times m } $$ $$ text { 2. } B _ { n times m } I _ { m } = B _ { n times m } $$ $$ text { 3. } A _ { n } I _ { n } = I _ { n } A _ { n } = A _ { n } $$ $$ text { 4. } I _ { n } I _ { n } = I _ { n } $$ 转置 矩阵的转置是最简单的一种矩阵变换。简单来说若$ n×m $的矩阵$ A $的转置为$ A ^ { mathrm { T } } $,则$ A ^ { mathrm { T } } $是一个$ m×n $的矩阵并且有$ mathbf { A } _ { i j } = mathbf { A } _ { j

1126:矩阵转置

瘦欲@ 提交于 2019-12-12 12:59:08
【题目描述】 输入一个n行m列的矩阵A,输出它的转置AT。 【输入】 第一行包含两个整数n和m,表示矩阵A的行数和列数(1≤n≤100,1≤m≤100)。 接下来n行,每行m个整数,表示矩阵A的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。 【输出】 m行,每行n个整数,为矩阵A的转置。相邻两个整数之间用单个空格隔开。 【输入样例】 3 3 1 2 3 4 5 6 7 8 9 【输出样例】 1 4 7 2 5 8 3 6 9 #include <iostream> #define A 100+5 using namespace std; int i,j; int main() { int n,m,a[A][A]; cin>>n>>m; for(i=0;i<n;i++) { for(j=0;j<m;j++) { cin>>a[i][j]; } } for(i=0;i<m;i++) { for(j=0;j<n;j++) { cout<<a[j][i]<<" "; } cout<<endl; } return 0; } 来源: CSDN 作者: C_Dreamy 链接: https://blog.csdn.net/C_Dreamy/article/details/103506616

位置角度平移旋转,“乱七八糟”的坐标变换

风流意气都作罢 提交于 2019-12-11 01:19:15
​本文转载自微信公众号ROBOTICS 原作者:CC 编辑:古月居 原文链接: https://mp.weixin.qq.com/s/eOq5QweS-VIg2e0qmkihMw 今天我们要讲所有学习机器人学的人都需要具备的一项基本技能——坐标变换。看明白这篇文章,你需要一点基础的向量和矩阵知识,不用多,只要知道 向量的加减,点乘(内积);矩阵的定义、加减乘逆以及转置;还有矩阵与向量的乘法 就够了。 机器人学为什么需要坐标变换呢?因为控制一个机械臂的根本,就是弄明白每一个关节的joint position与end effector的position and orientation的关系,用更简洁的话来讲,就是joint space与operational space之间的互相映射关系。这里有两个小说明: 不仅仅是位置/角度的映射关系,也包括 速度、加速度、力或扭矩的映射关系 所有我直接用英文而没有翻译的词汇,都是我在 第一篇文章 中解释过的重要概念 好了,接下来就让我们暂时不谈机器人,先把让很多人觉得头疼的坐标变换搞明白。 坐标系(coordinate system) 描述空间位置、速度和加速度,大部分都是用笛卡尔坐标系,也就是大家熟知的三个互相垂直的坐标轴组成的坐标系。我只想强调几个地方: 像题图那样的彩色坐标系,若无特别说明,都是 rgb(红绿蓝)依次对应 xyz

数学基础 | (4) cs229线性代数基础

岁酱吖の 提交于 2019-12-10 14:02:40
目录 1. 基本概念和符号 2. 矩阵乘法 3. 运算和属性 4. 矩阵微分 1. 基本概念和符号 线性代数提供了一种紧凑地表示和操作线性方程组的方法。例如,以下方程组: 这是两个方程和两个变量,正如你从高中代数中所知,你可以找到 和 的唯一解(除非方程以某种方式退化,例如,如果第二个方程只是第一个的倍数,但在上面的情况下,实际上只有一个唯一解)。在矩阵表示法中,我们可以更紧凑地表达: 我们可以看到,这种形式的线性方程有许多优点(比如明显地节省空间). 基本符号 我们使用以下符号: 在许多情况下,将矩阵视为列向量或行向量的集合非常重要且方便。 通常,在向量而不是标量上操作在数学上(和概念上)更清晰。只要明确定义了符号,用于矩阵的列或行的表示方式并没有通用约定。 2. 矩阵乘法 向量-向量乘法 矩阵-向量乘法 矩阵-矩阵乘法 有了这些知识,我们现在可以看看四种不同的(形式不同,但结果是相同的)矩阵-矩阵乘法:也就是本节开头所定义的 的乘法。 矩阵C的第i列可以由矩阵A和矩阵B的第i列通过矩阵-向量乘积运算得到: 同理,矩阵C的第i行可以由矩阵A的第i行和矩阵B通过矩阵-向量乘积运算得到: 运算律: 3. 运算和属性 单位矩阵和对角矩阵 转置 对称矩阵 矩阵的迹 范数 线性相关性和秩 方阵的逆 请注意,并非所有矩阵都具有逆。例如,非方形矩阵根据没有逆的定义。然而,对于一些方形矩阵A

Opencv中reshape函数

烂漫一生 提交于 2019-12-10 10:09:41
在opencv中,reshape函数比较有意思,它既可以改变矩阵的通道数,又可以对矩阵元素进行序列化,非常有用的一个函数。 函数原型: C++: Mat Mat::reshape(int cn, int rows=0) const 参数比较少,但设置的时候却要千万小心。 cn: 表示通道数(channels), 如果设为0,则表示保持通道数不变,否则则变为设置的通道数。 rows: 表示矩阵行数。 如果设为0,则表示保持原有的行数不变,否则则变为设置的行数。 首先设置一个初始矩阵:一个20行30列1通道的一个矩阵 int main() { Mat data = Mat(20, 30, CV_32F); //设置一个20行30列1通道的一个矩阵 cout << "行数: " << data.rows << endl; cout << "列数: " << data.cols << endl; cout << "通道: " << data.channels() << endl; system("pause"); return 1; } 输出: 第一次变化:通道数不变,将矩阵序列化1行N列的行向量。 int main() { Mat data = Mat(20, 30, CV_32F); //设置一个20行30列1通道的一个矩阵 cout << "行数: " << data.rows <<

主成分分析(PCA)原理详解

我的未来我决定 提交于 2019-12-10 10:07:52
个人分类: 机器学习与Python 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhongkelee/article/details/44064401 转载请声明出处: http://blog.csdn.net/zhongkelee/article/details/44064401 一、PCA简介 1. 相关背景 上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后,颇有体会。最近在做主成分分析和奇异值分解方面的项目,所以记录一下心得体会。 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。 因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。 2. 问题描述

矩阵微分

混江龙づ霸主 提交于 2019-12-10 07:07:07
目录 协梯度矩阵 梯度矩阵 实值向量函数的协梯度矩阵 实值矩阵函数的协梯度矩阵 实值标量函数的 H e s s i a n Hessian H e s s i a n 矩阵 (对称矩阵) 实矩阵微分计算公式 变元 :在初等数学里,变量或变元、元是一个用来表示值的符号,该值可以是随意的,也可能是未指定或未定的。 v e c ( ⋅ ) vec(\cdot) v e c ( ⋅ ) 表示矩阵化为列向量, r v e c ( ⋅ ) rvec(\cdot) r v e c ( ⋅ ) 表示矩阵化为行向量, v e c ( ⋅ ) vec(\cdot) v e c ( ⋅ ) 称为向量化算子, v e c ( ⋅ ) vec(\cdot) v e c ( ⋅ ) 又分为按行展开和按列展开,没有特殊说明的向量都为列向量。 u n v e c ( ⋅ ) unvec(\cdot) u n v e c ( ⋅ ) 表示列向量化为矩阵, u n r v e c ( ⋅ ) unrvec(\cdot) u n r v e c ( ⋅ ) 表示行向量化为矩阵 设矩阵 A = ( a i j ) ∈ R m × n A=(a_{ij})\in R_{m\times n} A = ( a i j ​ ) ∈ R m × n ​ ,把矩阵 A A A 的元素按行的顺序排列成一个列向量: v e c A =