Asked by Matthew Hunt
on 17 Oct 2019 at 16:12

So I have some code which I want to get working and I don't understand the error which is being given to me which is: Error using bsxfun

Non-singleton dimensions of the two input arrays must match each other.

My code is:

function A=test_anode(t,D,c_0,Gamma,I_app)

%Compute the mu_n

N=20;

mu_n=zeros(N,1); %array which stores the solutions

old=0;error=10^-8;

for i=1:N

err=10;

while err>error %This solves the iteration x_n+1=atan(x_n)+n*pi

y_n=atan(old)+i*pi;

err=abs(tan(y_n)-y_n);

old=y_n;

end

mu_n(i)=y_n;

end

%Define the functions

a_1=@(s,mu) c_0*(1+mu.^-2).*sin(mu).*exp(-D*mu.^2.*s).*(-cos(mu)*mu.^-1+sin(mu).*mu^-2);

a_2=@(s,mu) -2*Gamma*I_app*(1+mu.^-2).*(sin(mu)).^2.*(1-exp(-D*mu.^2.*s));

%Then populate the matrices

A=bsxfun(a_1,t,mu_n)+bsxfun(a_2,t,mu_n);

The vector t can be anything, not necessarily the same length as mu_n. Is that what is cauing the issue?

Answer by Sulaymon Eshkabilov
on 17 Oct 2019 at 16:20

Hi,

Here is the corrected ver. of your code:

function A=test_anode(t,D,c_0,Gamma,I_app)

%Compute the mu_n

N=20;

mu_n=zeros(N,1); %array which stores the solutions

old=0;error=10^-8;

for i=1:N

err=10;

while err>error %This solves the iteration x_n+1=atan(x_n)+n*pi

y_n=atan(old)+i*pi;

err=abs(tan(y_n)-y_n);

old=y_n;

end

mu_n(i)=y_n;

end

%Define the functions

a_1=@(s,mu) c_0*(1+mu.^-2).*sin(mu).*exp(-D*mu.^2.*s).*(-cos(mu).*mu.^-1+sin(mu).*mu.^-2);

a_2=@(s,mu) -2*Gamma*I_app*(1+mu.^-2).*(sin(mu)).^2.*(1-exp(-D*mu.^2.*s));

%Then populate the matrices

A=bsxfun(a_1,t,mu_n)+bsxfun(a_2,t,mu_n);

end

Good luck.

Matthew Hunt
on 17 Oct 2019 at 16:27

Thank you for correcting my code but what exactly was wrong with it in the first place?

Matthew Hunt
on 17 Oct 2019 at 16:34

Just tested the new version, exactly the same error.

Sign in to comment.

Answer by Sulaymon Eshkabilov
on 17 Oct 2019 at 16:32

Edited by Sulaymon Eshkabilov
on 17 Oct 2019 at 18:59

Ok

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.