How can i do fast a sum of products?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi everyone! My problem is: I have an array of matrix 2x2, [A],[B],....[Z] (elements in the matrix are integer (or complex) numbers) and an array: 1/(s-a),1/(s-b),....,1/(s-z). And a,b,c,...,z are also integer (or complex) numbers. But s is a variable, s=1 to 100. And, i must calculate:
H=[A]*1/(s-a)+[B]*1/(s-b)+.....+[Z]*1/(s-z)
So, If i want to create a code that do fast (exactly is general), how can i do? I created two variables consist of cells, H1=cell(n,1) where n is number of matrix. So, H1 is a row vector, nx1, H1 consist of the matrix above. H2=cell(1,n) where n is number of matrix. So, H2 is a column vector, 1xn, H2 consist of 1/(s-a),1/(s-b),....,1/(s-z).
So, instead of writing a code:
H=[A]*1/(s-a)+[B]*1/(s-b)+.....+[Z]*1/(s-z) % (of course, i need do: syms s)
i will write:
H=H1xH2, % (H is not only a matrix 2x2 but also function of s variable)
That is problem i want to talk. But, you know, Matlab returns a warning
Undefined function 'mtimes' for input arguments of type 'cell'.
So, who can help me? thank you so much.
2 commentaires
Matt J
le 15 Jan 2018
Modifié(e) : Matt J
le 15 Jan 2018
H1 is a row vector, nx1...H2 is a column vector, 1xn
Things that are nx1 are columns and things that are 1xn are rows.
of course, i need do: syms s
Are you sure you need to do this symbolically? If speed is a priority, this is working against you.
Réponses (1)
Matt J
le 16 Jan 2018
If you're not doing it symbolically, it becomes very simple matrix arithematic:
H1stack=cat(3,H1{:});
H2stack=cat(3,H2{:});
s=5; %for example
result=H1stack./(s-H2stack);
4 commentaires
Matt J
le 18 Jan 2018
Modifié(e) : Matt J
le 18 Jan 2018
Array dimensions must match for binary array op.
To get rid of this, upgrade to R2016b or higher! If you can't, you'll have to use bsxfun().
Yes, but can "s" be a vector?
Yes, you can modify the code to
function result = myFunc(s,H1stack,H2stack)
s=reshape(s,1,1,1,[]);
result=H1stack./(s-H2stack);
end
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!