matlab练习程序(三阶张量T-QR分解)
转自:http://www.cnblogs.com/tiandsp/archive/2012/10/31/2747971.html
这里所谓的张量和黎曼那里的张量是不一样的,那个张量更多的用在物理上,这个张量就是矩阵的扩展。比如零阶张量就是数,一阶张量就是向量,二阶张量就是矩阵,三阶四阶就是更高维的数的集合。这个领域现在在数学上还都是很新的东西,矩阵的秩我们都知道怎么求,但是三维的张量或更高维的张量的秩现在在数学上也没有结果。至于张量的奇异值分解也只是也只是用很早的如用HOSVD来处理,我感觉这并不完全合适,新的分解算法就连老美也都没研究出来,从二维到多维的确有很多基础的理论都不适用了,像两个张量相乘这样基础的算法,现在虽然有,但我感觉也不是通用的,还要继续改进。
下面就是我看的一篇论文的张量相乘和分解方法,她的理论也可能不正确,不过这种新领域,大家都是在探索。
论文在这里:http://www.cs.tufts.edu/tech_reports/reports/2010-5/report.pdf,他主要介绍的是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<i
s{i,j}=A{index_down(i-j+1)};
end
end
end re=cell(a_n3,1);
for i=1:a_n3
re{i}=zeros(a_n1,b_n2);
end for i=1:a_n3
for j=1:a_n3
for k=1:1
re{i,k}=re{i,k}+s{i,j}*B{j,k};
end
end
end for i=1:a_n3
c(:,:,i)=re{i};
end end
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)';
end
end
最后是在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;
end
Q=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
matlab练习程序(三阶张量T-QR分解)的更多相关文章
- QR分解与最小二乘
主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一.QR分解 R分解法是三种将矩阵分解的方式之一.这种方式,把矩阵分解成一个正交矩阵与一个上三角矩阵的 ...
- QR分解与最小二乘(转载自AndyJee)
转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...
- QR分解
从矩阵分解的角度来看,LU和Cholesky分解目标在于将矩阵转化为三角矩阵的乘积,所以在LAPACK种对应的名称是trf(Triangular Factorization).QR分解的目的在 ...
- matlab练习程序(SUSAN检测)
matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...
- 机器学习中的矩阵方法03:QR 分解
1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其 ...
- (转)matlab练习程序(HOG方向梯度直方图)
matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram o ...
- QR 分解
将学习到什么 介绍了平面旋转矩阵,Householder 矩阵和 QR 分解以入相关性质. 预备知识 平面旋转与 Householder 矩阵是特殊的酉矩阵,它们在建立某些基本的矩阵分解过程中起着 ...
- QR分解迭代求特征值——原生python实现(不使用numpy)
QR分解: 有很多方法可以进行QR迭代,本文使用的是Schmidt正交化方法 具体证明请参考链接 https://wenku.baidu.com/view/c2e34678168884868762d6 ...
- 矩阵QR分解
1 orthonormal 向量与 Orthogonal 矩阵 orthonormal 向量定义为 ,任意向量 相互垂直,且模长为1: 如果将 orthonormal 向量按列组织成矩阵,矩阵为 ...
随机推荐
- Xamarin Android权限请求
Xamarin Android权限请求 Android权限规定了App是否可以访问特定的资源,如网络.电话和短信.在原有API 6.0之前,App在安全的时候,会请求一次权限.一旦安装后,App就 ...
- Xcode代码提示里的字母含义
P -- 协议 M -- 成员方法 C -- 类 K -- 枚举 .常量 V -- 成员变量 T -- typedef类型 G -- 全局变量 f -- 函数 # -- #define指令
- Google的代码高亮-code-prettify
前不久发现,在wordpress中贴代码的时候,发现code标签并没有意料中的好使用,在贴代码的时候没有高亮真的是一件无法忍受的事情. 正巧,两周前听过同事Eason的一个关于Markdown的分享, ...
- 【BZOJ 2728】 2728: [HNOI2012]与非 (线性基?)
2728: [HNOI2012]与非 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 813 Solved: 389 Description Inpu ...
- tomcat8.5请求参数限制的问题
前段时间遇到这个问题: 包含json字符串类型的参数的http请求失败,返回状态码400,提示invalid character found in the request target. Tomcat ...
- stl upper_bound()
http://blog.csdn.net/niushuai666/article/details/6734650 upper_bound( a , b , k )返回有序升序序列[a,b)中能放下 ...
- Windows下Apache2.2+PHP5安装步骤
Windows下Apache2.2+PHP5安装 初学者在学习PHP的时候可能都会遇到安装Apache和PHP不成功的问题,于是很多开发者便选择了集成包,一键安装好Apache+PHP+MySQL.但 ...
- Linux下ip route、ip rule、iptables的关系(转)
1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...
- iOS学习之iOS沙盒(sandbox)机制和文件操作复习
1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...
- Android的Master/Detail风格界面中实现自定义ListView的单选
原文在这里:http://duduli.iteye.com/blog/1453576 可以实现多选,那么如何实现单选呢,这里我写了一个非常简单的方法: public void onListItemCl ...