I have: Error using bsxfun Non-singleton dimensions of the two input arrays must match each other.
조회 수: 2 (최근 30일)
이전 댓글 표시
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
답변 (2개)
Sulaymon Eshkabilov
2019년 10월 17일
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!