Cell Array and Matrix Multiplication
5 次查看(过去 30 天)
显示 更早的评论
Here is my question/problem:
I need to multiply several 4x4 matrices together in order based on some data. I have a loop that constructs a 1 x n cell array with each cell being a 4x4 matrix.
for i = 1:n
ct = cos(dh.t(i+1));
st = sin(dh.t(i+1));
cf = cos(dh.f(i));
sf = sin(dh.f(i));
a = dh.a(i);
d = dh.d(i+1);
A = [ct , -st, 0, a;
cf*st, cf*ct, -sf, -sf*d;
sf*st, sf*ct, cf, cf*d;
0 , 0, 0, 1];
B(1,i) = {A};
end
A is the matrix for each iteration i and is stored in the cell array B. I need each of the matrices in B to be multiplied by each other in order and return a single 4x4 matrix ( i.e. T = B{1,1}*B{1,2}*B{1,3}*...*B{1,n} ). I am not sure how to do this for a general case n. I am not even sure if what I did above is the best way to do this problem, but that's what I have done so far.
Thanks for any help.
0 个评论
采纳的回答
the cyclist
2011-2-17
If everything is numeric, do you really need to use cell arrays (which then need to be "unpacked" to do the numeric calculation again)? Or could you do something like:
B = zeros(4,4,n);
T = eye(4);
for i = 1:n
blah blah
B(:,:,i) = A;
T = T*B(:,:,i);
end
It is not clear what, if any, of the intermediate results you need to ultimately store, so you may not even to keep B at all.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!