I want to take the integral of an exponetial of a matrix but I got this error and dont know how fix it:
'Unable to perform assignment because the indices on the left side are not compatible with the size of
the right side.
Error in Untitled7 (line 12)
ggg(ss)=integral(fun,0,T,'ArrayValued',true);'
thanks in advance
clc
clear
close all
M=ones(3,3);
Dmat=[1;2;3];
fun=@(t)expm(-M.*t)*Dmat;
T=1e-2;
g=integral(fun,0,T,'ArrayValued',true);

4 commentaires

Walter Roberson
Walter Roberson le 19 Juin 2021
ss is not defined anywhere obvious, and you did a "clear" so we know it is not in the workspace. The code should error about ss not being defined.
raha ahmadi
raha ahmadi le 19 Juin 2021
Dear Walter Roberson
you are right. I did not know how can make this mistake (embarressed smiley face)
very sorry and very thanks for your attention
Walter Roberson
Walter Roberson le 19 Juin 2021
And when you do not have that (ss) in there, then no error message is emitted.
I notice your tags mention expm, which is the matrix exponential, but your code uses exp() which is element-by-element exponential.
raha ahmadi
raha ahmadi le 19 Juin 2021
two mistakes in 5 lines code! good for me !!
I m really sorry and thank you very much. I m very tired and ...I corrected it
I hope you best wishes

Connectez-vous pour commenter.

 Réponse acceptée

Walter Roberson
Walter Roberson le 19 Juin 2021

1 vote

format long g
M = ones(3,3);
Dmat = [1;2;3];
fun = @(t)expm(-M.*t)*Dmat;
T = 1e-2;
g = integral(fun,0,T,'ArrayValued',true);
g
g = 3×1
0.00970297763432788 0.0197029776343279 0.0297029776343279

1 commentaire

raha ahmadi
raha ahmadi le 19 Juin 2021
I appreciate your attention and hope you all best

Connectez-vous pour commenter.

Plus de réponses (1)

Scott MacKenzie
Scott MacKenzie le 19 Juin 2021

0 votes

You note:
I want to take the integral of an exponetial of a matrix
But,
exp(-M.*t)*Dmat;
is a vector, not a matrix. Try using the dot operator in your function definition:
exp(-M.*t).*Dmat;

1 commentaire

raha ahmadi
raha ahmadi le 19 Juin 2021
sorry you are right but in fact I need to calculate the integal of a multiplication of a exponensial of a matrix by a column vector "Dmat". Its a matrix multiplication not an element-wise multiplication.
Best regards

Connectez-vous pour commenter.

Catégories

En savoir plus sur Mathematics dans Centre d'aide et File Exchange

Produits

Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by