[問題] 這段程式錯在哪裡呢??已回收

看板MATLAB作者 (終於知道錯在哪了)時間15年前 (2010/04/24 15:26), 編輯推噓1(1018)
留言19則, 5人參與, 最新討論串1/1
function D = myfun(d) D=d(1)^0.5; y1 =[1.8605 0.1119 2.5853 1.1686 1.4679 2.4842 2.0903 2.2123 2.9080 0.0418]; if y1<=0,d(1)=1; elseif 0<=y1 & y1<=1,d(1)=(1-y1); else d(1)=0; end; 我想要執行y1的10個值在下面的限制式範圍中 自行對應到d(1)值 之後再跑出D=根號d(1)的10個值 想請問這段程式的問題是@@?? 執行後一直出現 Input argument "d" is undefined. Error in ==> myfunk at 2 D=d(1)^0.5; 想請問這段程式請問是哪裡出錯呢>"<? 謝謝幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 116.118.170.14 ※ 編輯: kighty 來自: 116.118.170.14 (04/24 15:34)

04/24 16:04, , 1F
m檔的名稱跟內部函數名稱都要是myfun看看
04/24 16:04, 1F

04/24 16:04, , 2F
myfunk改成myfun
04/24 16:04, 2F

04/24 16:15, , 3F
邏輯部份也不對
04/24 16:15, 3F

04/24 16:48, , 4F
可以請問一下邏輯錯誤是>"<??
04/24 16:48, 4F

04/24 16:54, , 5F
D=d(1)^0.5;這行跟以下開始完全沾不上邊呀
04/24 16:54, 5F

04/24 16:57, , 6F
那如果我希望跑出來的d(1)值開根號變D值 要如何修正呢@@?
04/24 16:57, 6F

04/24 17:07, , 7F
1. if 條件判斷部份 2. D=...部份放錯位置
04/24 17:07, 7F

04/24 17:07, , 8F
3.不論y1的size 結果永遠是d(1) = 0
04/24 17:07, 8F

04/24 17:21, , 9F
我已修正D=..的位置 但無法跑出10個數值 也如你說的ans=0
04/24 17:21, 9F

04/24 17:22, , 10F
想請問如何修正跑出10個數值呢?
04/24 17:22, 10F

04/24 17:38, , 11F
debug mode或是人肉debug吧
04/24 17:38, 11F

04/24 18:27, , 12F
要用迴圈吧
04/24 18:27, 12F

04/25 02:28, , 13F
應該可以不用function的形式來寫
04/25 02:28, 13F

04/25 02:32, , 14F
你可以直接打在指令區或用m-file打好code再執行就好了
04/25 02:32, 14F

04/25 02:33, , 15F
若你要寫成函式形式 y1那些值不應該在m-file裡 那是你要輸入
04/25 02:33, 15F

04/25 02:34, , 16F
是在指令區輸入 myfun([1.8605 0.1119 1.4679.... ])
04/25 02:34, 16F

04/25 02:34, , 17F
就跑出你想要的答案
04/25 02:34, 17F

04/25 02:36, , 18F
我的做法是 1.函式宣告 2.宣告10個變數空間; 3.迴圈
04/25 02:36, 18F

04/25 02:38, , 19F
4.if判斷式 5.D=d1.^0.5; 結束
04/25 02:38, 19F
文章代碼(AID): #1BqfqaHN (MATLAB)