why cant multiply an anonymous function with a changing variable?

3 vues (au cours des 30 derniers jours)
Giannis Zafeiroudas
Giannis Zafeiroudas le 3 Avr 2020
Commenté : Rik le 3 Avr 2020
clc
clear
f=10000;
w=2*pi*f;
mr=linspace(1,10,5);
m0=pi*4e-7;
m=mr.*m0; %magnetic permability
s1=10*1e6;
a1=@(a) sqrt(a.^2+1j.*w.*m.*s1);
x=integral(a1,1,3000)
%%%% the result at matlab is:
Error using +
Matrix dimensions must agree.
  1 commentaire
Rik
Rik le 3 Avr 2020
Why did you flag your question as unclear? Apart from not using correct formating for your code I don't see how your question is unclear. I will remove the flag. If you think this question needs a flag after reading this thread feel free to flag your question again, adding an explanation.

Connectez-vous pour commenter.

Réponse acceptée

Steven Lord
Steven Lord le 3 Avr 2020
integral will call your function with a vector of values and expects your function to return a vector of the same size. w and s1 are scalars but m is a vector. There's no guarantee that m and a will be vectors of the same size, and even if they were I'm not certain that would do what you want.
If the function you're trying to integrate is an array-valued function, specify the 'ArrayValued' option with value true in your integral call. This will cause integral to call your function with a scalar instead.
  1 commentaire
Giannis Zafeiroudas
Giannis Zafeiroudas le 3 Avr 2020
Okay i changed it.
It worked and the result that i get its the right one.
Thanks a lot!
Best wishes!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Entering Commands dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by