[英]Matlab coding help matrix manupulation
我正在為我的傳熱課程編寫代碼。 這個數字被認為是其他方程式,但我用數字代替它們
l=.2;
w=.2;
dx=.05;
dy=.05;
k=400;
q=500;
Nx = (l/dx+1); %nodes in the x direction
Ny = (w/dy+1); %nodes in the y direction
T=zeros(Nx,Ny);
for m = (1:Nx) %node counter in x nodes
for n = (1:Ny) %node counter in y nodes
if n==1; %left side
T(m,n)=50;
elseif m==1 && n<Ny;%Heat Flux
T(m,n)=60;
elseif m>=2 && n==Ny && m<Nx; %insulated, right side
T(m,n)=70;
elseif n>=2 && n<=Ny-1 && m==Nx ; %insulated, bottom side
T(m,n)=80;
elseif m>=((.325*l)/dx)+1 && m<=((.675*l)/dx)+1 && n>=((.325*w)/dy)+1 && n<=
((.675*w)/dy)+1;
T(m,n) = 400;%center or steam
elseif m>1 && m<Nx && n>1 && n<Ny
T(m,n) = 90;
elseif m==1 && n==Ny;
**T(m,n)=T(m+2,n)/2;%**<-------------------this wont work properly****
elseif n==Nx && m==Ny;
T(m,n)= 110;
end
end
end
我不確定為什么它不會選擇正確的值並將其除以2而不是說當答案是T(2,5)時它是0(= 20 = 35)?
T =
50 60 60 60 0
50 90 90 90 70
50 90 400 90 70
50 90 90 90 70
50 80 80 80 110
任何幫助都會很感激
謝謝
照我看來,
您正在嘗試訪問仍初始化為零的Matrix元素。 T矩陣為零(5,5)。
條件: if m==1 && n==Ny
在迭代的早期執行,那時m = 1,n = 5,T(2,5)= 0。
所以你有T(1,5)= 0
所以,我建議你調試代碼,並在每次迭代結束時檢查Matrix M的內容。
T(1,5)為零的原因是所指示的代碼行在T(3,5)仍被設置為零時執行 - 它尚未填充值70,因此T( 1,5)設置為0/2 = 0。
如果以相反的順序遍歷m
的值,則通過修改代碼
for m = (Nx:-1:1)
你會發現T(3,5)現在在設置T(1,5)之前設置為70,而T(1,5)現在正確設置為35。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.