How to solve "dimension mismatch"?
8 views (last 30 days)
Show older comments
I get this message:
Subscripted assignment dimension mismatch.
Error in metallror (line 23)
A(end,end-1)=(2.*r); % byter ut den första elementen innan -(1/(2*h))
The programe:
clc,clf,clear all
%Givet
Ti=450; r0=1;R=2;K=1;Te=20;
x=[1 2 4 8 ]; %används för att fördubbla våra intervall
g=0; %fortsätt läs koden!
% N=4; %Antal intervall
% n=N;
for i=1:4
N=25*x(i); %fördubblar delintervallena
h=(R-r0)/N; %steglängd
r=r0+h:h:R; %Inre punkter plus sista obekanta
sub=(2*r-h)'; %sub diagonal
dia=(-4.*r)'; %huvuddiagonal
sup=(2*r+h)'; %super diagonal
%vänsterled------
A=spdiags([sub dia sup],-1:1,N,N); % bildar en gles matris
size(A)
A(end,end-1)=(2.*r); % byter ut den första elementen innan -(1/(2*h))
% med vårt handberäknade värde
A(end,end)=((-2.*r)-(2.*r.*h.*K)-((h.^2).*K)); % byter ut den sista elementen innan K
%högerled
B=zeros(N,1); % högerled
B(1,1)=-Ti*((2*r0)-h); % byter ut elementen med
% vårt handberäknade värde
B(end,1)=((-2*h*K*r)*Te-((h.^2)*K)*Te); % byter ut elementen innan KTe
%Beräknar
U=A\B
u=[Ti U'];
%visar resultatet
disp(['temperaturen vid r=2 med ',num2str(N),' delintervall är: ',num2str(u(end))])
%Ritar vår graf
g=g+1; %används för att rita olika diagram
subplot(2,2,g)
size(r)
size(u)
plot([1 r],u),grid on %[1 r],u)
xlabel('Radie')
ylabel('Temperatur')
title(['Diagram med ',num2str(N),' delintervall' ])
end
0 Comments
Answers (1)
Star Strider
on 3 Dec 2015
I can’t run your code because we do not have your ‘x’ vector. However, it looks as though ‘r’ is a vector, and by definition, A(end,end-1) will only address a scalar, regardless of the size of your ‘A’ matrix.
2 Comments
Star Strider
on 3 Dec 2015
It looks like ‘r’ is a (1x2) vector, (at least in the first iteration). You cannot store a vector as a scalar.
See Also
Categories
Find more on Waveform Generation 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!