Matrix Dimension mis-match problem

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.

 採用された回答

Star Strider
Star Strider 2015 年 12 月 11 日

0 投票

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);

2 件のコメント

lsutiger1
lsutiger1 2015 年 12 月 11 日
Yep, just figured that out a couple of minutes ago! Thank you for the response.
Star Strider
Star Strider 2015 年 12 月 11 日
My pleasure!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMATLAB についてさらに検索

質問済み:

2015 年 12 月 11 日

コメント済み:

2015 年 12 月 11 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by