Hello all,
I am trying to integrate over a function.
% calculation of f(b)
b = exp((-q*Vj)/(2*kB*Temp))*cosh((Et-Ei)/((kB*Temp)+0.5*(log(tau_p0/tau_n0))));
% integrate over x while varying b
fcn_b = zeros(1,length(b));
fcn = @(x)1./((x.^2)+(2.*b.*x)+1);
fcn_b = integral(fcn,0,Inf);
end
But I receive an error after the fcn = @x line saying matrix dimensions must agree.
The size of b => 1 x 141. Any help would be appreciated.

2 Kommentare

KSSV
KSSV am 21 Feb. 2018
Bearbeitet: KSSV am 21 Feb. 2018
Give us the complete code......what is q? what is size of x?
atsprink
atsprink am 21 Feb. 2018
Bearbeitet: atsprink am 21 Feb. 2018
All of those values are just constants except Vj. Vj is an array of 1 x 141. x is not a size, its a function of x as in f(x) = Integration of 1 / (x^2 + 2bx + 1) I uploaded all the files. Start with main.m
edit: added too many files.... comment out lines 10-19 in main.m as those function calls are not needed

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

atsprink
atsprink am 21 Feb. 2018

2 Stimmen

I figured it out I believe. I needed to add " 'ArrayValued', true " to my integral fcn_b line of code. It is at least not throwing an error right now but not sure if it is returning a correct answer.

3 Kommentare

Benjamin
Benjamin am 6 Nov. 2019
I had the same error of
Error using /
Matrix dimensions must agree.
in an numerical integration in which the @(x) function is very complicated, and after I added 'ArrayValued',true it fixed my problem.
Thank you so.
Lucas Ivan
Lucas Ivan am 23 Feb. 2023
Hello everyone! I was having the same error and I could solve it with this. However, any idea on why we need to add this argument?
Torsten
Torsten am 23 Feb. 2023
Bearbeitet: Torsten am 23 Feb. 2023
However, any idea on why we need to add this argument?
If you don't add this argument, MATLAB calls your function to be integrated with a vector of values for the integration variable and expects your function to return a vector of the same size. This won't happen since your function itself is a vector of functions - depending on the vector b. If you set "ArrayValued" to "true", MATLAB "knows" that you want to integrate a vector-valued function and calls it only with single (scalar) values for the integration variable.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 21 Feb. 2018

Bearbeitet:

am 23 Feb. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by