Re: [問題] 拜託幫我一下已回收

看板MATLAB作者 (GaWii)時間15年前 (2010/05/26 22:46), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《dadada123 (祐祐)》之銘言: : 能勞煩各位看一下嗎?以下是我的程式碼: : syms x1 x2 : f=@(x1,x2) x1^2+x2^2; % 這行是多餘的,可以刪掉 : y=x1^2+x2^2; : y1=diff(y,x1); : y2=diff(y,x2); y1, y2 型態為 symbol 如果想要以數字(或其他符號)取代原本的符號 可用 subs 所以下面改成這樣 : z1=@(xa,xb) subs(y1,{x1,x2},{xa,xb}); : z2=@(xa,xb) subs(y2,{x1,x2},{xa,xb}); three=@(x0) x0+1; : x1=3;x2=5; % 這邊已經把 syms x1,x2 覆蓋 : x0=[x1,x2]; : %a=eval(z1(x0)); 上面這行會錯吧,z1 為兩個變數輸入,你只打一個變數 改成下面這樣 a=z1(x0(1),x0(2)); 或 a=z1(x1,x2); : [t2]=three(x0); : %b=eval(z1(t2)); b=z1(t2(1),t2(2)); : fprintf('%d\n',a); : fprintf('%d\n',b); : 而我的函數的M檔案如下: : function [t2]=three(x0) : t1=x0; : delta=1; : t2=t1+delta; 不用特地用 Mfile 描述這個數學式 函數寫在上面 : ==================================================== : 我的問題在於我的x0變為矩陣後代入t(x0),成功的算出a=6 : 而x0代到函數裡做運算後,回傳t2的值為[4 6] : 但是代到t(x0)做運算後,出來的值b卻還是等於6 : 不是應該會變成8嗎? : 請問為什麼矩陣內的值明明有更新,但是運算的時候卻沒有改變 : 是哪裡的設定有問題嗎? 看起來沒問題啊,有更新吧。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.220.250

05/27 09:12, , 1F
意思就是說:只能以變數讓它讀,不能整個矩陣一起做運算
05/27 09:12, 1F

05/27 10:25, , 2F
變數可以是數值、向量或是矩陣,但個數一定要符合定義函數
05/27 10:25, 2F

05/27 10:25, , 3F
時所定的變數數目。
05/27 10:25, 3F

05/28 00:50, , 4F
了解,感謝你的熱心指點
05/28 00:50, 4F
文章代碼(AID): #1B_JGpht (MATLAB)
文章代碼(AID): #1B_JGpht (MATLAB)