我是靠谱客的博主 幽默蜡烛,最近开发中收集的这篇文章主要介绍将对称矩阵的CSR格式转化为COO格式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

有时候需要matlab调用Fortran中的稀疏矩阵(CSR Format),示例如下

!// 将对称矩阵的CSR格式转化为COO格式
program main
        
        implicit none
        integer, parameter :: n = 5, nz = 9
        integer :: i, j, k, num, nn
        real*8  :: a(nz)   = [1.d0, 2.d0, 4.d0, 5.d0, 7.d0, 8.d0, 9.d0, 11.d0, 12.d0]
        integer :: ia(n+1) = [1, 3, 5, 8, 9, 10]
        integer :: ja(nz)  = [1, 4, 2, 4, 3, 4, 5, 4, 5]
        
        real*8  :: v(nz)
        integer :: row(nz), col(nz)
        
        !// 将CSR格式存储为COO格式
        v = 0.d0; j = 0; nn = 1
        do i = 1, n
                
                num = ia(i+1) - ia(i)
                
                do k = j+1, j+num
                        
                        
                        row(nn) = i
                        col(nn) = ja(k)
                        v(nn)   = a(k)
                        
                        nn = nn + 1
                        
                end do
                j = j + num
                
        end do
        
        open( 101, file = 'ijv.dat' )
        do i = 1, nz
                write(101,*) row(i), col(i), v(i)
        end do
        close( 101 )
        
        
end program main

%% 将COO存储的矩阵转换为稀疏矩阵
clear; clc

A  = load('ijv.dat');
nz = size(A,1); n = 5;

A = sparse( A(:,1), A(:,2), A(:,3), n, n, nz);
A = A + triu(A,1)';
% A = A + A';
% for i = 1:n
%         A(i,i) = A(i,i) ./ 2;
% end

最后

以上就是幽默蜡烛为你收集整理的将对称矩阵的CSR格式转化为COO格式的全部内容,希望文章能够帮你解决将对称矩阵的CSR格式转化为COO格式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部