Error using vertcat; Dimensions of arrays being concatenated are not consistent.

1 view (last 30 days)
I have this kind of error at line 64. The last plot. Someone could help me to fix it?
clc; clear all; close all;
% parametri inziali
N=30;
L=1;
x=linspace(0,L,N+1);
h=x(2)-x(1);
dx=x(2)-x(1);
% condizione iniziale
phi0=sin(2*pi*x./L);
% parametri
k=1;
b=5;
beta=1.5;
dt=(beta*h*h)/k;
Nt=100;
Tf=Nt*dt;
t=linspace(0,Tf,Nt+1);
% plot([x,L],[phi0,phi0(1)]);
% costruisco i pesi
i=1;
xc=x(i);
wdd=PesiDer(x(1:4),xc,2);
w=PesiDer(x(1:4),xc,0);
switch i
case 1
v2=zeros(1,N);
v2(1)=wdd(1); v2(2)=wdd(2); v3(3)=wdd(3); v2(4)=wdd(4);
case 2
v2=zeros(1,N);
v2(1)=wdd(2); v2(2)=wdd(3); v3(3)=wdd(4); v2(end)=wdd(1);
case 3
v2=zeros(1,N);
v2(1)=wdd(3); v2(2)=wdd(4); v3(end-1)=wdd(1); v2(end)=wdd(2);
case 4
v2=zeros(1,N);
v2(1)=wdd(4); v2(end-2)=wdd(); v3(end-1)=wdd(2); v2(end)=wdd(3);
end
% matrice spaziale
v=zeros(1,N);
v(1)=1;
I=gallery('circul',v);
A=-k*gallery('circul',N,v2)+beta*gallery('circul',N,v);
% matrice temporale
dt=(beta*h*h)/k;
Nt=100;
Tf=Nt*dt;
B=I-.5*A*dt;
C=I+.5*A*dt;
T=B\C;
phi=phi0(1:end-1)';
% soluzione analitica
phia=zeros(Nt,N);
for ite=1:Nt
for isp=1:N
phia=exp((-(b+k)*(2*pi/L)^2)*t(ite))*sin(x(isp));
end
end
for it=2:Nt+1
phin=T*phi; %soluzione numerica
plot([x;x(end)+dx],[phi0;phi0(1)],'.-r',[x;x(end)+dx],[phi;phi(1)],'g',[x;x(end)+dx],[phia(it,:);phia(it,1)],'y');
end
  3 Comments
Adam
Adam on 23 Jul 2018
Just use
doc size
on the command line with a breakpoint at the line in question and you will instantly see the size of the two things you are attempting to concatenate, e.g.
size( phia(it,:) )
Guillaume
Guillaume on 23 Jul 2018
I've formatted the code for you. It would be useful if you told us which is line 64.

Sign in to comment.

Answers (1)

Guillaume
Guillaume on 23 Jul 2018
What is the intent of
[phia(it,:);phia(it,1)]
in your plot line.
phia(it, :) implies that phia has more than one column since it asks for all columns of row it. phia(it, 1) has of course only one column. Therefore vertically concatenating something with more than one column with something with only one column is always going to fail.
The only way the above can work is if phia has only one column, i.e. is a vector, in which case 2d indexing is misleading and the above could be simply written as
[phia(it); phia(it)] %not likely to be what you meant.

Categories

Find more on Creating and Concatenating Matrices 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!