MATLAB: Subscripted assignment dimension mismatch.

subscripted assignment dimension mismatch

function main
D=1; %L=0;
Pr=1;R=0.1;Sc=1;
xa=0;xb=6;
Lv = [-2.5:0.025:0];
p = [];
for i=1:length(Lv)
L = Lv(i);
fODE = @(x,y) [y(2); y(3); y(2)^2-y(3)*y(1)-1; y(5); -3*Pr*y(1)*y(5)/(3+4*R); y(7); -Sc*y(1)*y(7)];
BCres= @(ya,yb)[ya(1); ya(2)-L-D*ya(3); ya(4)-1; ya(6)-1; yb(2)-1; yb(4);yb(6)];
xint=linspace(xa,xb,101);
solinit=bvpinit(xint,[0 1 0 1 0 1 0]);
sol=bvp4c(fODE,BCres,solinit);
sxint=deval(sol,xint);
%%WE NEED TO PLOT for
S(i,1)=sxint(3,:);
end
figure(1)
plot(Lv,S,'-','Linewidth',1.5);
xlabel('\bf \lambda');
ylabel('\bf C_{f}');
hold on
end
%%While running the code following ERROR occurs:
Subscripted assignment dimension mismatch.
Error in (line 17)
S(i,1)=sxint(3,:);

Best Answer

  • function all_sxint = main
    D=1; %L=0;
    Pr=1; R=0.1; Sc=1;
    xa=0;xb=6;
    Lv = [-2.5:0.025:0];
    nLv = length(Lv);
    all_sxint = cell(nLv, 1);
    S = zeros(nLv, 7);
    for i=1:nLv
    L = Lv(i);
    fODE = @(x,y) [y(2); y(3); y(2)^2-y(3)*y(1)-1; y(5); -3*Pr*y(1)*y(5)/(3+4*R); y(7); -Sc*y(1)*y(7)];
    BCres= @(ya,yb)[ya(1); ya(2)-L-D*ya(3); ya(4)-1; ya(6)-1; yb(2)-1; yb(4);yb(6)];
    xint=linspace(xa,xb,101);
    solinit=bvpinit(xint,[0 1 0 1 0 1 0]);
    sol=bvp4c(fODE,BCres,solinit);
    sxint=deval(sol,xint);
    all_sxint{i} = sxint;
    S(i,:) = sxint(3,:);
    end
    figure(1)
    plot(Lv, S, '-', 'Linewidth', 1.5);
    xlabel('\bf \lambda');
    ylabel('\bf C_{f}');
    legend({'bc1', 'bc2', 'bc3', 'bc4', 'bc5', 'bc6', 'bc7'})
    end
    Assign the output to a variable so that you can examine all of the time points for all of the Lv values afterwards, as you indicate that you need to be able to do that.