MATLAB: Matrix Dimension mis-match problem

finite differencematrixvectors

I have a very quick question. I am working through a finite difference problem (1D steady-state heat transfer) and am having trouble getting the coefficient matrix A, shown below:
n = length(dL);
A = diag(ones(n-1),-1)-2*eye(n)+diag(ones(n-1),1);
I am getting the error:
Error using -
Matrix dimensions must agree.
Error in final (line 85)
A = diag(ones(n-1),-1)-2*eye(n)+diag(ones(n-1),1);
Can someone please tell me where my error is? I feel like this is extremely straight-forward and should be working.

Best Answer

You need to create a vector of ones for the off-diagonals, not a matrix of them, so ones has to have 2 arguments in the diag calls:
A = diag(ones(n-1,1),-1)-2*eye(n)+diag(ones(n-1,1),1);
Related Question