[問題]function輸出函數之小問題

看板MATLAB作者 (伊武天澤)時間13年前 (2012/11/30 12:45), 編輯推噓0(007)
留言7則, 1人參與, 最新討論串1/1
有一些function output=name(input)之類的小問題 我發現output的部份是不是不打x開頭的, 將不會以ans顯示出來!? 還是我的m文建有問題,以下是我的程式碼 (可能有人看過了.這兩三天都在搞同一個程序..) function xm = code3(A,b,x0,tol,max_it); %輸入及輸出: % A 係數矩陣(n乘n) % b 右側項(n乘1) % x0 初始解(n乘1) % tol 若x變量的範數<tol則停止 % max 最大跌代次數 %xMat % 將 x 排回原來的位置 %B將排好的 x 塞回去 % x 解向量(n乘1) %xm塞回原方格之矩陣 [n,m]=size(A); xold=x0; C=-A; for i=1:n C(i,i)=0; end for i = 1:n C(i,:)=C(i,:)/A(i,i); end for i=1:n d(i,1)=b(i)/A(i,i); end disp('i x1 x2 x3 ....'); while(i <=max_it) xnew=C*xold+d; if norm(xnew-xold) <= tol x=xnew; disp('Jacobi method converged');return; else xold=xnew; end disp([i xnew']); i=i+1; end disp('Jacobi method did not converge'); disp('results after maximum number of iterations'); x=xnew; xMat = rot90(reshape(xnew, n^0.5, n^0.5)) ;% 將 x 排回原來的位置 B=ones(n^0.5+2,n^0.5+2); %這裡是先假設邊界全是1的矩陣來測試..之後會用手動建立 b矩陣 B(2:(end-1), 2:(end-1)) = xMat ;% 將排好的 x 塞回去 xm=B; 以上是我的程式碼...我本來是打算直接打 function B = code3(A,b,x0,tol,max_it);就好了 可是當我這樣打時,到最後則不會跑出ans.. 只會告訴我收斂或是不收斂, 可當我output打成Xmat或是xm時,則會以ans的方式來顯示出來。 還是說是我本來設定上有甚麼問題 才會這樣子!? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.229.231

11/30 13:05, , 1F
要不要在回傳前也用disp直接顯示xm值? 另外我不懂為何output
11/30 13:05, 1F

11/30 13:07, , 2F
打Xmat或xm會顯示值這句話!是不是你其實是最後輸入時有無分
11/30 13:07, 2F

11/30 13:08, , 3F
號的差別而已?
11/30 13:08, 3F

11/30 13:14, , 4F
sorry 我看錯意思了
11/30 13:14, 4F

11/30 13:31, , 5F
不過我以 function B= ... 也會以ans顯示,可否說明要使用此
11/30 13:31, 5F

11/30 13:33, , 6F
函數時,你所下的命令為何~另外在收斂回傳時並無xm,B的變數
11/30 13:33, 6F

11/30 13:34, , 7F
存在,所以最好給個初始矩陣
11/30 13:34, 7F
我最後很像找到原因了 是因為B出現了兩次以上的樣子Orz... ※ 編輯: e01234567 來自: 140.120.229.231 (11/30 16:43) ※ 編輯: e01234567 來自: 140.120.229.231 (12/01 02:37)
文章代碼(AID): #1Gk3dMNE (MATLAB)