矩阵乘积表示的s manbetx 845个人操作数

内部类代表的产品矩阵,分别存储/处理。s manbetx 845

661下载

更新2010年12月26日

查看许可协议

这个提交定义一个类为代表的产品矩阵(或知道如何用)的任何对象时更高效的存储和操纵矩阵分别。s manbetx 845

用法:

P = ProdCascade ({A1, A2,…,一个})

这将创建一个对象P代表矩阵产品A1 * A2 *…*。然而,在内部对象存储/操纵矩阵{A1, A2,……单独,},可以更有效的memory-wise比当产品完全评估。此外,在评估一个矩阵向量乘积A1 * A2 *……* * x,它可以更有效的速度明智利用结合性和计算结果使用连续n产品。s manbetx 845

这个想法的一个简单的例子是外产品u * v。的列向量u和v .显然,更有效率,它用向量的外积x u * (v。”* x)比(u * v。) * x。下面给出了一个示范类正好利用了这一点。

u =兰德(4000 1);
v =兰德(4000 1);
x =兰德(4000 1);

Pmat = u * v。”;
P = ProdCascade ({u, v。});


抽搐
日元= Pmat * x;
z1 = Pmat。*日元;
toc;
%运行时间是0.050854秒。

抽搐
y2 = P * x;
z2 = P。' * y2;
toc
%运行时间是0.000457秒。


PercentError = 100 *规范([y2; z2] - [y1; z1]) /规范((y1; z1)), % = 7.8336 e - 014

> >谁Pmat P

类属性名称大小字节

4000页64244 ProdCascade x4000
Pmat 4000 x4000 128000000双


其他情况最好可以存储一个矩阵分解为一个产品将包括,例如,当一个大矩阵稀疏分解。

方法重载的类包括mtimes(*),转置(。),ctranpose(),精细,和发票,利用这些操作或多或少地分布在矩阵乘法。s manbetx 845此外,一些方法使对象P被操纵,就好像它是细胞数组{A1,…},最初生成的对象。例如,表达式A1 = P{1}将提取第一个操作数的产品。

ProdCascade类不仅可以是有用的对持有的产品矩阵,也知道如何用的任何操作对象。s manbetx 845这是一个例子,它使用我MatrixObj类

//www.tianjin-qmedu.com/matlabcentral/fileexchange/26611-on-the-fly-definition-of-custom-matrix-objects

频域滤波操作表示为一个乘法ProdCascade对象,P。

% %数据
N = 2 ^ 14;
x =兰德(N, 1);
低通滤波器= 1 (N, 1);低通滤波器(10:end-9) = 0;

% %进行FFT运算符
Q = MatrixObj;
Q.Ops.mtimes = @ (Q, x) fft (x);
Q.Trans.mtimes = @ (Q, x)传输线(x);

% %使滤波算子,P * x应该相当于传输线(fft (x) *低通)

L = spdiags(低通0 speye (N));
P = ProdCascade ({Q’, L Q});

isequal (P * x,传输线(fft (x) *低通)% = 1


DISCAIMER:错误检查是从未做过ProdCascade的运营商是否兼容连续乘法。

引用作为

马特·J (2023)。矩阵乘积表示的s manbetx 845个人操作数(//www.tianjin-qmedu.com/matlabcentral/fileexchange/29498-matrix-s manbetx 845products-expressed-in-terms-of-individual-operands), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2010b
兼容任何释放
平台的兼容性
窗户 macOS Linux
类别
找到更多的在处理类帮助中心MATLAB的答案

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!
版本 发表 发布说明
1.3.0.0

编辑文案人员信息。没有新的代码。

1.1.0.0

修改了描述页面。没有新的代码下载。

1.0.0.0