Avoid for loops, use cell operation to do: r2' * r1 * l1' * l2
1 回表示 (過去 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!
回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!