张量 t-product 积(matlab代码)

参考文献:Tensor Robust Principal Component Analysis with a New Tensor Nuclear Norm

首先是文章2.3节中 t-product 的定义:

块循环矩阵:

参考知乎博主的例子及代码:(t-product与t-QR分解,另一篇傅里叶对角化也很值得学习)

Matlab 复制代码
% A=zeros([3,2,2]);
% B=zeros([2,1,2]);
% 
% A(:,:,1)=[1 0;0 2;-1 3];
% A(:,:,2)=[-2 1;-2 7;0 -1];
% 
% B(:,:,1)=[3;-1];
% B(:,:,2)=[-2;-3];

A=rand(3,2,5);
B=rand(2,1,5);

C=t_product(A,B)

function C=t_product(A,B)
    % @author:slandarer
    % 获取张量大小
    [l,p,n]=size(A);dimA=[l,p,n];
    [p,m,n]=size(B);dimB=[p,m,n];
    dimC=[l,m,n];
    
    % 对A,B进行unfold展开操作
    ufold_A=reshape(permute(A,[2,1,3]),dimA(2),[])';
    ufold_B=reshape(permute(B,[2,1,3]),dimB(2),[])';
    
    % 对A构建循环矩阵
    bcirc_A=zeros([l*n,p*n]);
    for i=1:n
        bcirc_A(:,(1:p)+(i-1)*p)=circshift(ufold_A,l*(i-1),1);
    end
    
    % bcirc(A)·unfold(B)
    AB=bcirc_A*ufold_B;
    
    % 还原张量维度
    C=ipermute(reshape(AB',dimC([2,1,3])),[2,1,3]);
    CC = fft(C, [], 3)   % 观察,张量C后n3-1个切片呈共轭对称
end
相关推荐
高洁012 小时前
具身智能中的世界模型训练
人工智能·python·深度学习·机器学习·transformer
正在走向自律3 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
for_ever_love__4 小时前
模型评估与过拟合——交叉验证、正则化与指标解读
机器学习·模型评估·交叉验证·过拟合
2501_926978335 小时前
给自指系统接一个外部锚 —— 一个关于「用 AI 观察自己」的方法
人工智能·经验分享·笔记·机器学习·ai写作
for_ever_love__7 小时前
线性回归与梯度下降——从零手写一个模型
python·机器学习·线性回归·梯度下降
AOI小白新手上路9 小时前
anomalib 缺陷检测复现笔记:从跑通库到 EfficientAD 落地
人工智能·笔记·机器学习
I Am a robert girl10 小时前
稀有事件估计的迭代去对齐:从源码视角拆解重要性采样新范式
开发语言·python·机器学习·重要性采样·蒙特卡洛方法·稀有事件估计
ctlover12 小时前
Pandas进阶
人工智能·机器学习·pandas
袖清暮雨14 小时前
机器学习之K近邻算法(KNN)
人工智能·机器学习·近邻算法
Asa1213815 小时前
Nature Microbiology|不依赖系统发育的机器学习框架从基因组预测菌株水平噬菌体—宿主互作
人工智能·机器学习