Home > tt2 > exp > tt_sparse_for_mv.m

tt_sparse_for_mv

PURPOSE ^

Sparsify the TT matrix in TT1.0 matrix format

SYNOPSIS ^

function [sttm] = tt_sparse_for_mv(ttm, cuttol)

DESCRIPTION ^

Sparsify the TT matrix in TT1.0 matrix format
   [STTM]=TT_SPARSE_FOR_MV(TTM,CUTTOL) Computes the sparse version of the
   matrix in the TT1.0 matrix format. May work for certain operators


 TT-Toolbox 2.2, 2009-2012

This is TT Toolbox, written by Ivan Oseledets et al.
Institute of Numerical Mathematics, Moscow, Russia
webpage: http://spring.inm.ras.ru/osel

For all questions, bugs and suggestions please mail
ivan.oseledets@gmail.com
---------------------------

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [sttm] = tt_sparse_for_mv(ttm, cuttol)
0002 %Sparsify the TT matrix in TT1.0 matrix format
0003 %   [STTM]=TT_SPARSE_FOR_MV(TTM,CUTTOL) Computes the sparse version of the
0004 %   matrix in the TT1.0 matrix format. May work for certain operators
0005 %
0006 %
0007 % TT-Toolbox 2.2, 2009-2012
0008 %
0009 %This is TT Toolbox, written by Ivan Oseledets et al.
0010 %Institute of Numerical Mathematics, Moscow, Russia
0011 %webpage: http://spring.inm.ras.ru/osel
0012 %
0013 %For all questions, bugs and suggestions please mail
0014 %ivan.oseledets@gmail.com
0015 %---------------------------
0016 z
0017 d=size(ttm,1);
0018 
0019 sttm=cell(d+2,1);
0020 sttm{d+1}=zeros(d-1,1);
0021 sttm{d+2}=zeros(d,1);
0022 
0023 n=size(ttm{1},1);
0024 m=size(ttm{1},2);
0025 rm1=size(ttm{1},3);
0026 sttm{d+1}(1)=rm1;
0027 sttm{d+2}(1)=n;
0028 sttm{1}=reshape(permute(ttm{1},[1,3,2]),[n*rm1,m]);
0029 sttm{1}(find(abs(sttm{1})/max(max(abs(sttm{1})))<cuttol))=0;
0030 sttm{1}=sparse(sttm{1});
0031 
0032 n=size(ttm{d},1);
0033 m=size(ttm{d},2);
0034 rm1=size(ttm{d},3);
0035 sttm{d+1}(d-1)=rm1;
0036 sttm{d+2}(d)=n;
0037 sttm{d}=reshape(permute(ttm{d},[1,3,2]),[n*rm1,m]);
0038 sttm{d}(find(abs(sttm{d})/max(max(abs(sttm{d})))<cuttol))=0;
0039 sttm{d}=sparse(sttm{d});
0040 
0041 for i=2:d-1
0042     n=size(ttm{i},1);
0043     m=size(ttm{i},2);
0044     rm1=size(ttm{i},3);
0045     rm2=size(ttm{i},4);
0046     sttm{d+1}(i)=rm2;    
0047     sttm{d+2}(i)=n;
0048     sttm{i}=reshape(permute(ttm{i},[1,4,3,2]),[n*rm2*rm1,m]);
0049     sttm{i}(find(abs(sttm{i})/max(max(abs(sttm{i})))<cuttol))=0;
0050     sttm{i}=sparse(sttm{i});
0051 end 
0052 
0053 end

Generated on Wed 08-Feb-2012 18:20:24 by m2html © 2005