Avoid for loops, use cell operation to do: r2' * r1 * l1' * l2

2 次查看(过去 30 天)
Hi all,
Say I have 2 simple 1-by-2 cells, I'd like to perform operation like this: r2' * r1 * l1' * l2 to obtain a 2-by-2 matrix, sample code as follows:
clear; clc;
% the cells.
bl = {1 2};
br = {3 4};
% element 1.
l1 = bl{1, 1};
l2 = bl{1, 1};
r1 = br{1, 1};
r2 = br{1, 1};
otpt11 = r2' * r1 * l1' * l2;
% element 2.
l1 = bl{1, 2};
l2 = bl{1, 1};
r1 = br{1, 2};
r2 = br{1, 1};
otpt12 = r2' * r1 * l1' * l2;
% element 3.
l1 = bl{1, 1};
l2 = bl{1, 2};
r1 = br{1, 1};
r2 = br{1, 2};
otpt21 = r2' * r1 * l1' * l2;
% element 4.
l1 = bl{1, 2};
l2 = bl{1, 2};
r1 = br{1, 2};
r2 = br{1, 2};
otpt22 = r2' * r1 * l1' * l2;
% put all elements together.
otpt = [otpt11 otpt12; otpt21 otpt22];
I can probably use for loops to do it, but I'd like to use a compact operation such as cellfun to do it, which I believe is faster and more nature for cells.
Many thanks!
  6 个评论
Jan
Jan 2017-5-9
Use loops. They are fast and clean, if you pre-allocate the output.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by