Element by element multiplication of a matrix
2 次查看(过去 30 天)
显示 更早的评论
I have a function f = e^(tH), where H is a square matrix. I want to compute this function for each value of t = 0:10:100 so I can plot f against t. Using .* is giving an error (sizes not compatible). What can I do?
0 个评论
回答(2 个)
Paul
2021-6-4
For the matrix exponential:
% example data
H = [1 2;3 4];
t = 0:5;
f = cell2mat(cellfun(@expm,mat2cell(H.*reshape(t,1,1,[]),2,2,ones(1,6)),'UniformOutput',false));
% compare a few cases by hand
f(:,:,2) - expm(H*t(2))
f(:,:,end) - expm(H*t(end))
If f is supposed to be element-by-element exponential:
f = exp(H.*reshape(t,1,1,[]))
0 个评论
Star Strider
2021-6-4
I have absolutely no idea what result you want.
Try this —
H = [1 2; 3 4]*0.01;
t = 0:10:100;
for k = 1:numel(t)
f{k} = exp(t(k)*H);
end
figure
hold on
for k = 1:numel(t)
plot(t(k)*[1 1; 1 1], f{k}, '.-')
end
hold off
grid
Also, consider the expm function, since ‘element-by-element’ is not precisely clear in this context.
.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!