the array index is not matching
52 views (last 30 days)
Show older comments
yogeshwari patel
on 28 Nov 2024 at 3:45
Commented: yogeshwari patel
on 2 Dec 2024 at 5:02
syms x mu gamma
syms t %c
alpha=1
U=zeros(1,2,'sym')
V=zeros(1,2,'sym');
A=zeros(1,1,'sym');
B=zeros(1,1,'sym');
C=zeros(1,1,'sym');
D=zeros(1,1,'sym');
series1(x,t)=sym(zeros(1,1));
series2(x,t)=sym(zeros(1,1));
%%%%%%%%%%%%%%%%%%%%% initial condition
%mu=1
U(1)=mu*exp(1i*x)
V(1)=gamma*exp(1i*x)
u=conj(U(1))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for m=1
A(1)=0;
B(1)=0;
for j=1:m
for k=1:j
A(1)=A(1)+U(k)*V(j-k+1)*conj(V(m-j+1));
B(1)=B(1)+V(k)*U(j-k+1)*conj(U(m-j+1));
end
end
U(m+1)=gamma(((m-1)*alpha)+1)/gamma((alpha*(m+1-1))+1)*1i*(1i*diff(U(m),x,1)+V(m)+A(1))
V(m+1)=gamma(((m-1)*alpha)+1)/gamma((alpha*(m+1-1))+1)*(-1i*diff(V(m),x,1)+U(m)+B(1))
end
Index exceeds the number of array elements. Index must not exceed 1.
R_tilde = builtin('subsref',L_tilde,Idx);
why it showing the error ? As I will compute diff(U(m),x,1)+V(m)+A(1)) . The index in each term will be 1 .
Accepted Answer
Vinay
on 28 Nov 2024 at 4:19
The issue is due to the 'gamma' variable which is being used both as a symbolic variable and as a function in the below code
U(m+1)=gamma(((m-1)*alpha)+1)/gamma((alpha*(m+1-1))+1)*1i*(1i*diff(U(m),x,1)+V(m)+A(1))
V(m+1)=gamma(((m-1)*alpha)+1)/gamma((alpha*(m+1-1))+1)*(-1i*diff(V(m),x,1)+U(m)+B(1))
The above code treats 'gamma' as a function and causing the error.The workaround is to use the multiplication operator after the variable 'gamma' in the expression
U(m+1)=gamma*(((m-1)*alpha)+1)/gamma*((alpha*(m+1-1))+1)*1i*(1i*diff(U(m),x,1)+V(m)+A(1))
V(m+1)=gamma*(((m-1)*alpha)+1)/gamma*((alpha*(m+1-1))+1)*(-1i*diff(V(m),x,1)+U(m)+B(1))
I hope this helps!
0 Comments
More Answers (0)
See Also
Categories
Find more on Data Distribution Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!