国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

稀疏矩陣的表示以及轉(zhuǎn)置

這篇具有很好參考價(jià)值的文章主要介紹了稀疏矩陣的表示以及轉(zhuǎn)置。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

1.稀疏矩陣概念

2.三元組表

3.稀疏矩陣的轉(zhuǎn)置

?4.題目實(shí)現(xiàn)


1.稀疏矩陣概念

矩陣中,若數(shù)值為0的元素?cái)?shù)目遠(yuǎn)遠(yuǎn)多于非0元素的數(shù)目,并且非0元素分布沒(méi)有規(guī)律時(shí),則稱該矩陣為稀疏矩陣。

圖示:

稀疏矩陣的轉(zhuǎn)置矩陣,矩陣,線性代數(shù),算法

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-782472.html

2.三元組表

在存儲(chǔ)稀疏矩陣時(shí),為了節(jié)省存儲(chǔ)單元,很自然地想到使用壓縮存儲(chǔ)方法。但由于非零元素的分布一般是沒(méi)有規(guī)律的,因此在存儲(chǔ)非零元素的同時(shí),還必須同時(shí)記下它所在的行和列的位置(i,j)。反之,一個(gè)三元組(i,j,aij)唯一確定了矩陣A的一個(gè)非零元。因此,稀疏矩陣可由表示非零元的三元組及其行列數(shù)唯一確定

若把稀疏矩陣中的三元組線性表按順序儲(chǔ)存結(jié)構(gòu)儲(chǔ)存,則稱為三元組順序表,簡(jiǎn)稱為三元組表。

下圖即為轉(zhuǎn)化:

稀疏矩陣的轉(zhuǎn)置矩陣,矩陣,線性代數(shù),算法

?三元組順序表的數(shù)據(jù)類型聲明如下:

#define M //稀疏矩陣行數(shù)
#define N //稀疏矩陣列數(shù)
#define MAX //稀疏矩陣中非零元最多的個(gè)數(shù)
typedef int Elem;
typedef struct 
{
	int r;//行號(hào) 
	int c;//列號(hào) 
	Elem d;//元素值 
}TupNode;

typedef struct
{
	int rows;//行數(shù)
	int cols;//列數(shù)
	int nums;//非零元素個(gè)數(shù)
	TupNode data[MAX]; 
}TSMat;

3.稀疏矩陣的轉(zhuǎn)置

? 1.一個(gè)m×n的矩陣A,它的轉(zhuǎn)置B是一個(gè)n×m的矩陣,且a[i][j]=b[j][i],0≦i≦m,0≦j≦n,即A的行是B的列,A的列是B的行。
? 2.?將A轉(zhuǎn)置為B,就是將A的三元組表a.data置換為表B的三元組表b.data,如果只是簡(jiǎn)單地交換a.data中i和j的內(nèi)容,那么得到的b.data將是一個(gè)按列優(yōu)先順序存儲(chǔ)的稀疏矩陣B,要得到按行優(yōu)先順序存儲(chǔ)的b.data,就必須重新排列三元組的順序。
???????由于A的列是B的行,因此,按a.data的列序轉(zhuǎn)置,所得到的轉(zhuǎn)置矩陣B的三元組表b.data必定是按行優(yōu)先存放的
核心思想:行列互換。

解決思路:
1.將矩陣行、列維數(shù)互換;
2.將每個(gè)三元組中的i和j相互調(diào)換;
3. 重排三元組次序,使B中元素以N的行(M的列)為主序。

A原矩陣三元組表? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? B轉(zhuǎn)置后的三元組表

稀疏矩陣的轉(zhuǎn)置矩陣,矩陣,線性代數(shù),算法稀疏矩陣的轉(zhuǎn)置矩陣,矩陣,線性代數(shù),算法

?顯然發(fā)現(xiàn)行列互換,對(duì)A中的列又1到7循環(huán)查找,然后放入B中的行。

矩陣轉(zhuǎn)置的實(shí)現(xiàn)思路是:不斷遍歷存儲(chǔ)矩陣的三元組表,每次都取出表中 j 列最小的那一個(gè)三元組,互換行標(biāo)和列標(biāo)的值,并按次序存儲(chǔ)到一個(gè)新三元組表中,。

例如,將圖 2a) 三元組表存儲(chǔ)的矩陣進(jìn)行轉(zhuǎn)置的過(guò)程為:

  1. 新建一個(gè)三元組表(用于存儲(chǔ)轉(zhuǎn)置矩陣),并將原矩陣的行數(shù)和列數(shù)互換賦值給新三元組;
  2. 遍歷三元組表,找到表中 j 列最小值 1 所在的三元組 (3,1,6),然后將其行標(biāo)和列標(biāo)互換后添加到一個(gè)新的三元組表中,如圖 3所示:稀疏矩陣的轉(zhuǎn)置矩陣,矩陣,線性代數(shù),算法

?3.繼續(xù)遍歷三元組表,找到表中 j 列次小值為 2 的三元組,分別為 (1,2,1)、(2,2,3) 和 (3,2,5),根據(jù)找到它們的先后次序?qū)⒏髯缘男袠?biāo)和列標(biāo)互換后添加到新三元組表中,如圖 所示:

稀疏矩陣的轉(zhuǎn)置矩陣,矩陣,線性代數(shù),算法

?代碼實(shí)現(xiàn):

void TranMat(TSMat *t,TSMat *tb)//t為A的三元組順序表,tb為B的三元組順序表
{
	int k,k1=0,v;                       //k1記錄tb中元素個(gè)數(shù)
	tb->rows=t->cols;tb->cols=t->rows;  //行列互換
    tb->nums=t->nums;
	if(t->nums!=0)                      //當(dāng)存在非零元時(shí)進(jìn)行轉(zhuǎn)置
	{
		for(v=0;v<t->cols;v++)          //按v=0.1....t.cols循環(huán)
		{
			for(k=0;k<t->nums;k++)      //k用于掃描t.data的所有元素
			{
				if(t->data[i].c==v)    //找到一個(gè)列號(hào)為v的元素
				{
					tb->data[k1].r=t->data[k].c;   //tb的行為t的列
					tb->data[k1].c=t->data[k].r;   //tb的列為t的行
					tb->data[k1].d=t->data[k].d;   //值不變
					k1++;                           //tb中元素的個(gè)數(shù)增加1.
				}
			}
		}

?4.題目實(shí)現(xiàn)

? ? 把給定的二維稀疏矩陣用三元組表表示和存儲(chǔ),并進(jìn)行稀疏矩陣的轉(zhuǎn)置,輸出轉(zhuǎn)置后的稀疏矩陣的三元組表。

假如給定如下二維稀疏矩陣:

3? 0? 0? ?1? 0? 0

0? 4? 0? 0? 0? ?0

5? 0? 0 2? ?0? 0

代碼實(shí)現(xiàn):

#include<stdio.h>
#define M 3
#define N 6
#define MAX 20
typedef int Elem;
typedef struct 
{
	int H;//行號(hào) 
	int L;//列號(hào) 
	Elem d;//元素值 
}TupNode;

typedef struct
{
	int rows;//行數(shù)
	int cols;//列數(shù)
	int nums;//非零元素個(gè)數(shù)
	TupNode data[MAX]; 
}TSMat;

void CreatMat(TSMat *B,Elem A[M][N])
{
	int i,j;
	B->rows =M;B->cols =N;B->nums =0 ;
	for(i=0;i<M;i++)
	{
		for(j=0;j<N;j++)
		{
			if(A[i][j]!=0)
			{
				B->data[B->nums].H=i;
				B->data[B->nums].L=j;
				B->data[B->nums].d=A[i][j];
				B->nums++;
			}
		}
	}
}//把二維稀疏矩陣用三元組表表示

void Print(TSMat *B)
{
	int i;
	if(B->nums<=0)
	{
		return ;
	}
	printf("%d   %d   %d\n",B->rows,B->cols,B->nums);
	printf("---------\n");
	for(i=0;i<B->nums;i++)
	{
		printf("%d   %d   %d\n",B->data[i].H,B->data[i].L,B->data[i].d);
	}
}//三元組表的輸出 

void TranMat(TSMat *B,TSMat *b)
{
	int i,j=0,k;
	b->rows=B->cols;b->cols=B->rows;b->nums=B->nums;
	if(B->nums!=0)
	{
		for(k=0;k<B->cols;k++)
		{
			for(i=0;i<B->nums;i++)
			{
				if(B->data[i].L==k)
				{
					b->data[j].H=B->data[i].L;
					b->data[j].L=B->data[i].H;
					b->data[j].d=B->data[i].d;
					j++;
				}
			}
		}
	}
} //稀疏矩陣的轉(zhuǎn)置 

int main()
{
	TSMat B,b;
	int i,j;
	int A[M][N]={{3,0,0,1,0,0},{0,4,0,0,0,0},{5,0,0,2,0,0}};//這里可以可以自己用兩個(gè)循環(huán)語(yǔ)句進(jìn)行輸入
	printf("原來(lái)的二維稀疏矩陣為:\n");
	for(i=0;i<M;i++)
	{
		for(j=0;j<N;j++)
		{
			printf("%d  ",A[i][j]);
		}
		printf("\n");
	}
	printf("二維稀疏矩陣用三元組表表示為:\n");
	CreatMat(&B,A);
	Print(&B);
	printf("稀疏矩陣三元組表的轉(zhuǎn)置為:\n");
	TranMat(&B,&b);
	Print(&b);
	return 0;
}

運(yùn)行結(jié)果圖片:

稀疏矩陣的轉(zhuǎn)置矩陣,矩陣,線性代數(shù),算法

?

?

到了這里,關(guān)于稀疏矩陣的表示以及轉(zhuǎn)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 線性代數(shù):矩陣運(yùn)算(加減、數(shù)乘、乘法、冪、除、轉(zhuǎn)置)

    線性代數(shù):矩陣運(yùn)算(加減、數(shù)乘、乘法、冪、除、轉(zhuǎn)置)

    目錄 加減 數(shù)乘 ?矩陣與矩陣相乘 ?矩陣的冪 矩陣轉(zhuǎn)置? 方陣的行列式? 方陣的行列式,證明:|AB| = |A| |B| ? ? ? ?

    2024年01月22日
    瀏覽(55)
  • 線性代數(shù)中的矩陣分解與稀疏處理

    線性代數(shù)是計(jì)算機(jī)科學(xué)、數(shù)學(xué)、物理等多個(gè)領(lǐng)域的基礎(chǔ)知識(shí)之一,其中矩陣分解和稀疏處理是線性代數(shù)中非常重要的兩個(gè)方面。矩陣分解是指將一個(gè)矩陣分解為多個(gè)較小的矩陣的過(guò)程,這有助于我們更好地理解和解決問(wèn)題。稀疏處理是指處理那些主要由零組成的矩陣的方法,

    2024年04月15日
    瀏覽(26)
  • 線性代數(shù) --- LU分解(Gauss消元法的矩陣表示)

    線性代數(shù) --- LU分解(Gauss消元法的矩陣表示)

    ???????? ????????首先, LU分解實(shí)際上就是用矩陣的形式來(lái)記錄的高斯消元的過(guò)程 。其中,對(duì)矩陣A進(jìn)行高斯消元后的結(jié)果為矩陣U,是LU分解后的兩個(gè)三角矩陣中其中之一。U是一個(gè)上三角矩陣,U就是上三角矩陣upper triangle的首字母的大寫(xiě)。 ? ? ? ? 高斯消元的每一步都

    2024年02月02日
    瀏覽(51)
  • 線性代數(shù)的學(xué)習(xí)和整理6:如何表示向量/矩陣? 矩陣就是向量組,矩陣的本質(zhì)是什么?

    線性代數(shù)的學(xué)習(xí)和整理6:如何表示向量/矩陣? 矩陣就是向量組,矩陣的本質(zhì)是什么?

    目錄 0 參考的知識(shí)點(diǎn)和目錄 1 向量 1.1 向量的概念 1.2 向量如何表示 1.3 向量/矩陣的優(yōu)秀表示方法:即向量空間內(nèi)的有向線段 2 矩陣 2.1?矩陣就是多個(gè)列向量的集合/合并( 而不是 +),矩陣就是多個(gè)列向量的一種簡(jiǎn)化書(shū)寫(xiě)方式? 2.2 矩陣的加法? =等價(jià)于=? 向量的加法 2.3 矩陣

    2024年02月07日
    瀏覽(27)
  • [數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版本)上機(jī)實(shí)驗(yàn)]稀疏矩陣的三元組順序表壓縮存儲(chǔ)以及轉(zhuǎn)置實(shí)現(xiàn)(含快速轉(zhuǎn)置)

    [數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版本)上機(jī)實(shí)驗(yàn)]稀疏矩陣的三元組順序表壓縮存儲(chǔ)以及轉(zhuǎn)置實(shí)現(xiàn)(含快速轉(zhuǎn)置)

    實(shí)現(xiàn)效果: 1、編寫(xiě)程序任意 輸入 一個(gè)稀疏矩陣,用 三元組順序表 壓縮存儲(chǔ) 稀疏矩陣 。 2、對(duì)稀疏矩陣進(jìn)行 轉(zhuǎn)置 , 輸出 轉(zhuǎn)置后的矩陣。 對(duì)應(yīng)《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》 第5章 數(shù)組與廣義表 實(shí)驗(yàn): 1、 掌握下三角矩陣的輸入、輸出、壓縮存儲(chǔ)算法; 2、 理解稀疏矩陣的三元

    2024年02月03日
    瀏覽(23)
  • 矩陣的轉(zhuǎn)置

    題目: 給你一個(gè)二維整數(shù)數(shù)組 matrix ,?返回 matrix 的 轉(zhuǎn)置矩陣 。 示例 1:

    2024年02月12日
    瀏覽(19)
  • 矩陣的轉(zhuǎn)置T和共軛轉(zhuǎn)置H

    矩陣 G G G 的轉(zhuǎn)置 G T G^T G T 和共軛轉(zhuǎn)置 G H G^H G H 在數(shù)學(xué)中表示不同的操作: 轉(zhuǎn)置 G T G^T G T : 轉(zhuǎn)置是指將矩陣的行和列互換得到的新矩陣。 對(duì)于實(shí)數(shù)矩陣,轉(zhuǎn)置是指將矩陣中的行變?yōu)橄鄳?yīng)的列。 對(duì)于復(fù)數(shù)矩陣,轉(zhuǎn)置同樣是將矩陣中的行變?yōu)橄鄳?yīng)的列。 在轉(zhuǎn)置中,并不改變矩

    2024年02月03日
    瀏覽(19)
  • pytorch中的矩陣的轉(zhuǎn)置問(wèn)題

    pytorch中的矩陣的轉(zhuǎn)置問(wèn)題

    我在我的pytorch專欄發(fā)布了一期pytorch入門之tensor,介紹了torch.tensor()的一些創(chuàng)建方式和常用方法,其中就有矩陣的轉(zhuǎn)置方法----tensor.t()、tensor.transpose()和tensor.permute()。我只是用少量語(yǔ)言和代碼介紹了這三種方法的用法,但其中的轉(zhuǎn)置原理沒(méi)有說(shuō)清。今天咱們就來(lái)絮叨絮叨~ 相信

    2023年04月08日
    瀏覽(23)
  • 【python】python求解矩陣的轉(zhuǎn)置(詳細(xì)講解)

    【python】python求解矩陣的轉(zhuǎn)置(詳細(xì)講解)

    ??博__主??:米碼收割機(jī) ??技__能??:C++/Python語(yǔ)言 ??公眾號(hào)??:測(cè)試開(kāi)發(fā)自動(dòng)化【獲取源碼+商業(yè)合作】 ??榮__譽(yù)??:阿里云博客專家博主、51CTO技術(shù)博主 ??專__注??:專注主流機(jī)器人、人工智能等相關(guān)領(lǐng)域的開(kāi)發(fā)、測(cè)試技術(shù)。 求一個(gè)矩陣的轉(zhuǎn)置 示例1: 輸入:[[1, 2

    2024年02月06日
    瀏覽(16)
  • C++數(shù)據(jù)結(jié)構(gòu) 矩陣的轉(zhuǎn)置、鏡像及旋轉(zhuǎn)

    C++ 中的矩陣是一種二維數(shù)組,用于存儲(chǔ)數(shù)值數(shù)據(jù)。矩陣可以用于存儲(chǔ)圖像數(shù)據(jù),以及科學(xué)和工程計(jì)算中的數(shù)據(jù)。 常用于以下場(chǎng)景: 數(shù)學(xué)運(yùn)算:矩陣乘法、行列式計(jì)算、特征值分解等。 圖像處理:圖像縮放、旋轉(zhuǎn)、顏色變換等。 矩陣分析:因子分析、主成分分析、協(xié)方差分

    2024年02月11日
    瀏覽(70)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包