이전 기사에서는 행렬을 정의했습니다. 이번 기사에서는 행렬에 몇 가지 일반적인 방법을 추가하겠습니다.
toString 메소드
toString 메소드는 일반적으로 객체를 문자열 설명으로 변환하는 데 사용되므로 이 메소드를 출력 행렬 요소로 정의합니다.
Mat.prototype.toString = function() {
var tempData = this.data,
text = "Mat(" this.type ") = {n",
num = this.col *
for(var i = 0; i text = "["
for(var j = 0; j text = (tempData[i * num j] ",");
text = "]n"
text = "}"
return text; >
이런 식으로 다음을 전달할 수 있습니다.
코드 복사
clone 메소드
실제로 생성자를 통해서도 cloning 작업을 수행할 수 있지만, 여전히 메모리와 사용을 용이하게 하는 메소드를 제공합니다.
코드 복사
지정된 요소 가져오기
그것을 얻는 두 가지 방법 Matrix 요소.
배열 방식
Mat는 실제로 배열 형태로 데이터를 저장하기 때문에 데이터는 다음과 같습니다.
R00 G00 B00 A00 R01 G01 B01 A01… B0n A0n
R10 G10 B10 A10 R11 G11 B11 A11 … R1n G1n B1n A1n …… Rm0 Gm0 Bm0 Am0 Rm1 Gm1 Bm1 Am1 … B, A는 각각 각 채널의 값을 나타내며, 첫 번째 첨자는 행 번호, 두 번째 첨자는 열 번호를 나타냅니다. 즉, k행과 j열의 G 채널 값은 Gkj이다.
Mat 유형 매트의 경우 k번째 행과 j번째 열 픽셀의 각 요소는 다음과 같습니다.
Rkj = mat.data[(k * mat.col j) * 4 0 ]
Gkj = mat.data[(k * mat.col j) * 4 1]
Bkj = mat.data[(k * mat.col j) * 4 2]
Akj = mat . data[(k * mat.col j) * 4 3]
버퍼 부분 참조 방법
버퍼의 부분 참조를 통해 행렬의 부분 참조를 얻을 수 있으며, 이를 사용하여 픽셀 데이터 배열을 얻을 수 있으며, 이 배열의 값을 변경하면 해당 행렬 데이터도 변경됩니다. 다른 예에서는 다른 데이터 유형의 데이터를 읽을 수 있습니다. 이는 일반 배열로는 달성할 수 없습니다. at 메소드의 구현을 살펴보겠습니다:
코드 복사
if(type.indexOf("Vec") > -1){
var temp = __type.match(/ Vec(d )( [a-z])/);
len = parsInt(temp[1])
switch(temp[2]){
case "b":
type = " uchar";
break;
case "s":
type = "short";
break;
case "i":
type = "int";
break;
case "f":
type = "float";
case "d":
type = "double"
}
}
switch(type){
case "uchar":
return new Uint8Array(this.buffer, (y * rowLen x), len)
break
case; "short":
return new Int16Array(this.buffer, (y * rowLen x * 2), len)
break
case "int":
return new Int32Array(this.buffer , (y * rowLen x * 4), len);
break;
case "float":
return new Float32Array(this.buffer, (y * rowLen x * 4), len); 🎜>break;
case "double":
return new Float64Array(this.buffer, (y * rowLen x 8), len)
break;
console. error("지원되지 않는 데이터 유형");
}
};
ArrayBuffer 및 TypedArray에 대해 명확하지 않은 경우 HTML5의 새로운 배열을 참조하세요.
문자열 유형 - 반환할 데이터 유형입니다. 지원:
uchar 부호 없는 8비트 정수
짧은 부호 있는 16비트 정수
int 부호 있는 32비트 정수
부동 부호 있는 32비트 부동 소수점
이중 부호 있는 64비트 부동 소수점 숫자
Vec 벡터 형식
벡터 형식 문자열의 철자는 Vec(유형)(숫자)입니다. 예를 들어 Vecb4는 부호 없는 8비트 정수 4개가 일반적입니다. 예를 들어 mat의 j행과 k열의 픽셀 데이터를 얻으려면 다음을 사용하세요.
mat.at("Vecb4", j, k)
int x - 행 수 얻을 요소의 매트릭스에서.
int y - 얻을 요소의 행렬에 있는 열 수입니다.
getRow 메소드 및 getCol 메소드
at의 구현 메소드와 유사하게 특정 행이나 열을 가져오는 메소드를 쉽게 작성할 수 있습니다.
Mat.prototype.getRow = function(__i){
var len = this.col * this.channel,
rowLen = len * this.bytes,
i = __i || 0
return new this.data.constructor(this.buffer, i * rowLen, len) ;
};
Mat.prototype .getCol = function(__i){
var len = this.col * this.channel,
rowLen = len * this.bytes,
array = [],
i = __i || 0 ;
function getAllElement(__constructor){
var row = this.row,
channel = this.channel
for(var j = 0; j array.push(new __constructor(this.buffer, j * rowLen i, 1 * 채널))
}
}
getAllElement(this.data.constructor); >return array;
};
rowRange 및 colRange 메서드
마찬가지로 행과 열을 지정하는 메서드도 얻을 수 있습니다.
array = [],
i = __i || 0,
j = __j || .row;
function getAllElement(__constructor){
var row = this.row;
for(var k = i; k array.push(new __constructor (this.buffer, k * rowLen, len));
}
}
getAllElement(this.data.constructor)
return array;
코드 복사
var row = this.row
channel = this.channel
for(var k = 0; k array.push (new __constructor(this.buffer, k * rowLen __i, (__j - __i 1) * 채널))
}
}
getAllElement(Float64Array);
return array;
} ;
이 네 가지 메소드는 모두 Array
direct[j][k]

在本系列的第一篇文章中,我们讨论了人工智能、机器学习、深度学习、数据科学等领域的关联和区别。我们还就整个系列将使用的编程语言、工具等做出了一些艰难的选择。最后,我们还介绍了一点矩阵的知识。在本文中,我们将深入地讨论人工智能的核心——矩阵。不过在此之前,我们先来了解一下人工智能的历史我们为什么需要了解人工智能的历史呢?历史上曾出现过多次人工智能热潮,但在很多情况下,对人工智能潜力的巨大期望都未能达成。了解人工智能的历史,有助于让我们看清这次人工智浪潮是会创造奇迹,抑或只是另一个即将破灭的泡沫。我们

在本文中,我们将学习如何使用Python中的numpy库计算矩阵的行列式。矩阵的行列式是一个可以以紧凑形式表示矩阵的标量值。它是线性代数中一个有用的量,并且在物理学、工程学和计算机科学等各个领域都有多种应用。在本文中,我们首先将讨论行列式的定义和性质。然后我们将学习如何使用numpy计算矩阵的行列式,并通过一些实例来看它在实践中的应用。行列式的定义和性质Thedeterminantofamatrixisascalarvaluethatcanbeusedtodescribethepropertie

得益于 NeRF 提供的可微渲染,近期的三维生成模型已经在静止物体上达到了很惊艳的效果。但是在人体这种更加复杂且可形变的类别上,三维生成依旧有很大的挑战。本文提出了一个高效的组合的人体 NeRF 表达,实现了高分辨率(512x256)的三维人体生成,并且没有使用超分模型。EVA3D 在四个大型人体数据集上均大幅超越了已有方案,代码已开源。论文名称:EVA3D: Compositional 3D Human Generation from 2D image Collections论文地址:http

新视角图像生成(NVS)是计算机视觉的一个应用领域,在1998年SuperBowl的比赛,CMU的RI曾展示过给定多摄像头立体视觉(MVS)的NVS,当时这个技术曾转让给美国一家体育电视台,但最终没有商业化;英国BBC广播公司为此做过研发投入,但是没有真正产品化。在基于图像渲染(IBR)领域,NVS应用有一个分支,即基于深度图像的渲染(DBIR)。另外,在2010年曾很火的3D TV,也是需要从单目视频中得到双目立体,但是由于技术的不成熟,最终没有流行起来。当时基于机器学习的方法已经开始研究,比

一种受欢迎的通用编程语言是Python。它被应用于各种行业,包括桌面应用程序、网页开发和机器学习。幸运的是,Python具有简单易懂的语法,适合初学者使用。在本文中,我们将使用Python来计算矩阵的右对角线之和。什么是矩阵?在数学中,我们使用一个矩形排列或矩阵,用于描述一个数学对象或其属性,它是一个包含数字、符号或表达式的矩形数组或表格,这些数字、符号或表达式按行和列排列。例如−234512367574因此,这是一个有3行4列的矩阵,表示为3*4矩阵。现在,矩阵中有两条对角线,即主对角线和次对

矩阵是按行和列排列的一组数字。m行n列的矩阵称为mXn矩阵,m和n称为其维度。矩阵是一个二维数组,在Python中使用列表或NumPy数组创建。一般来说,矩阵乘法可以通过将第一个矩阵的行乘以第二个矩阵的列来完成。这里,第一矩阵的列数应等于第二矩阵的行数。输入输出场景假设我们有两个矩阵A和B,这两个矩阵的维度分别为2X3和3X2。相乘后得到的矩阵将有2行1列。[b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

用户必须输入两个矩阵的顺序以及两个矩阵的元素。然后,比较这两个矩阵。如果矩阵元素和大小都相等,则表明两个矩阵相等。如果矩阵大小相等但元素相等不相等,则显示矩阵可以比较,但不相等。如果大小和元素不匹配,则显示矩阵无法比较。程序以下是C程序,用于比较两个矩阵是否相等-#include<stdio.h>#include<conio.h>main(){ intA[10][10],B[10][10]; in

在社交媒体运营中,矩阵账号倒流是一种常见的策略,通过在不同账号之间相互引导流量,实现粉丝的互相补充和活跃度的提升。矩阵账号之间的倒流需要精心策划和执行,不是一件简单的事情。本文将详细探讨如何在不同账号之间实现倒流,以及矩阵倒置的意义。一、矩阵间的账号如何进行倒流?在矩阵账号中,选择一个主线账号至关重要,它将成为主要的流量来源和核心内容发布的平台。内容规划是根据账号特点和目标受众,制定相应的内容计划,以确保内容质量和风格统一。3.互推互赞:在矩阵账号之间进行互推互赞,通过合理的布局和安排,引导粉丝


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전
유용한 JavaScript 개발 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
