博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab练习程序(三阶张量T-QR分解)
阅读量:6198 次
发布时间:2019-06-21

本文共 1720 字,大约阅读时间需要 5 分钟。

转自:http://www.cnblogs.com/tiandsp/archive/2012/10/31/2747971.html 

这里所谓的张量和黎曼那里的张量是不一样的,那个张量更多的用在物理上,这个张量就是矩阵的扩展。比如零阶张量就是数,一阶张量就是向量,二阶张量就是矩阵,三阶四阶就是更高维的数的集合。这个领域现在在数学上还都是很新的东西,矩阵的秩我们都知道怎么求,但是三维的张量或更高维的张量的秩现在在数学上也没有结果。至于张量的奇异值分解也只是也只是用很早的如用HOSVD来处理,我感觉这并不完全合适,新的分解算法就连老美也都没研究出来,从二维到多维的确有很多基础的理论都不适用了,像两个张量相乘这样基础的算法,现在虽然有,但我感觉也不是通用的,还要继续改进。

  下面就是我看的一篇论文的张量相乘和分解方法,她的理论也可能不正确,不过这种新领域,大家都是在探索。

  论文在这里:,他主要介绍的是T-svd,T-svd分解后合成的只是原张量的一个近似结果,而T-QR就能得到一个准确的结果,所以我这里用了T-QR。以Matlab角度来看T-SVD和T-QR的代码其实是很类似的。

首先是两个函数的代码,放在.m文件中,文件名就是默认文件名(函数名)

 1   mul.m

function c=mul(a,b)    [a_n1 a_n2 a_n3]=size(a);    [b_n1 b_n2 b_n3]=size(b);    c=zeros(a_n1,b_n2,a_n3);    A=cell(a_n3,1);    B=cell(b_n3,1);        for i=1:a_n3        A{i}=a(:,:,i);        B{i}=b(:,:,i);    end    index_up=zeros(1,a_n3);    index_down=zeros(1,a_n3);    for i=1:a_n3            index_up(i)=a_n3-i+1;        index_down(i)=i;    end        s=cell(a_n3,a_n3);    for i=1:a_n3        for j=1:a_n3            if i==j                s{i,j}=A{1};            end                   if j>i                s{i,j}=A{index_up(j-i)};            end                   if j

2  transpos.m 

function a=transpos(b)        [n1 n2 n3]=size(b);    a=zeros(n2,n1,n3);    for i=1:n3        a(:,:,i)=b(:,:,i)';    endend

最后是在matlab命令行中的代码:

clear all;close all;clc;n1=3;n2=3;n3=3;A(:,:,1)=[10 23 34;43 55 63;72 85 96];A(:,:,2)=[24 17 35;52 36 55;81 94 75];A(:,:,3)=[65 16 52;21 47 78;92 33 43];%A=imread('s.jpg');D=fft(A,[],3);for i=1:n3    [q r]=qr(D(:,:,i));    %[u s v]=svd(D(:,:,i));    Q(:,:,i)=q;    R(:,:,i)=r;    %S(:,:,i)=s;endQ=ifft(Q,[],3);R=ifft(R,[],3);%S=ifft(S,[],3);B(:,:,1)=eye(n1,n2);B(:,:,2)=zeros(n1,n2);B(:,:,3)=zeros(n1,n2);%c=mul(mul(U,S),transpos(V));c=mul(Q,R); c

 

你可能感兴趣的文章
Android -- ImageLoader简析
查看>>
『一些同学学不好C语言,把罪责归于「因为教材是谭浩强写的」实在是很滑稽』吗?...
查看>>
mysql 索引相关知识
查看>>
自定义控件出现“loaded nib but the view outlet was not set”
查看>>
深信服笔试题(网络project师售后)
查看>>
我是一个线程(修订版)
查看>>
成都Uber优步司机奖励政策(4月4日)
查看>>
C语言+SDL2 图形化编程
查看>>
Oracle数据库之SQL基础(二)
查看>>
mybati之#与$的区别
查看>>
常用命令收集
查看>>
似懂非懂的localStorage和sessionStorage
查看>>
阿里移动技术峰会的一些体会 2015-07-04
查看>>
Visual Studio 连接 SQL Server 的connectionStringz和
查看>>
VMware unrecoverable error解决方法
查看>>
Keepalived
查看>>
JS判断只能是数字和小数点
查看>>
jQuery缓存机制(二)
查看>>
【iCore3 双核心板_FPGA】实验十四:FSMC总线通信实验——独立地址模式
查看>>
关于华为x2中的外置SDCard的使用
查看>>