I have: Error using bsxfun Non-singleton dimensions of the two input arrays must match each other.
    10 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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?
0 Commenti
Risposte (2)
  Sulaymon Eshkabilov
      
 il 17 Ott 2019
        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.
Vedere anche
Categorie
				Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

