Info
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Matrix size problems after integrating.
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
The following is the code I used
q=10e8:(20e9-10e8)/1000:20e9;
q=q';
s=length(q);
epso = 8.8 *10.^-12;
epsr=5.7;
ro=3.63*(10.^-3);
epsl = 2.5;
ri=1.13*(10.^-3);
copen = (epso/sqrt(epsr)*log(ro/ri));
cload= (epsl/sqrt(epsr)*log(ro/ri));
t = zeros(1,s);
for f = 1:length(q)
fun = @(x)((((((besselj(0,(2*pi*q(f))/(3e8))*x*ro)-besselj(0,(2*pi*q(f))/(3e8))*x*ri)).^2)./x)*freload(x,q));
y(f) = copen*abs(integral(fun,0,Inf,'Arrayvalued',true));
t(f)=(1-y(f))/(1+y(f));
end
plot (q,t);
where the function freload is as follows -
function f = freload(x,q)
epsl=3.4-0.001j;
f=(1./sqrt(epsl-(x.^2))).*(1+exp(-2*1i*2*pi*q./(3e8).*sqrt(epsl-(x.^2))))./((1-exp(-2*1i*2*pi*q/(3e8).*sqrt(epsl-(x.^2)))));
end
The code is giving me an output for another function instead of freload(). The error I get while using it is -
In an assignment A(:) = B, the number of elements in A and B must be the same.
Error in numint (line 14) y(f) = copen*abs(integral(fun,0,Inf,'Arrayvalued',true));
However I have taken the same size for both input and output. Any help would be appreciated.
1 commentaire
James Tursa
le 13 Sep 2017
When I run your code, I get a 1001 element column vector on the rhs of that line as the result, which you are then trying to assign to y(f), hence the error.
Réponses (0)
Cette question est clôturée.
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!