概述
有时候需要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格式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复