[問題] 四維的if已回收

看板MATLAB作者 (ForeverFun)時間15年前 (2010/05/30 22:46), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串1/1
之前有在板上請問各位大大 不過在寫四維時遇到了問題 XYans是一個四維矩陣(8281,5,20,20) 我的目標是要把8281個資料中大於201的刪掉 我寫了下列程式 for XX=1:size(XYans,3) for YY=1:size(XYans,4) >> d = 1; while length(XYans)>=d, if XYans(d,1,XX,YY)> 201 XYans(d,:,XX,YY)=[]; else d=d+1; end end end end 但跑完後卻出現下列訊息 ??? A null assignment can have only one non-colon index. 請問我該怎麼debug呢~?? 謝謝~!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.174.2.52

05/30 23:44, , 1F
While迴圈看起來跑不完?
05/30 23:44, 1F

05/31 09:48, , 2F
請問大大是什麼意思~我本來的程式是只有d=1 到兩個end
05/31 09:48, 2F

05/31 09:48, , 3F
可以跑~!!! 但是加入四維for XX & YY後就出現這訊息~~
05/31 09:48, 3F

05/31 14:46, , 4F
XYans(d,:,:,:)=[]
05/31 14:46, 4F

05/31 15:18, , 5F
這樣寫會不會影響到別的XX,YY的值一起刪掉呀~??
05/31 15:18, 5F

05/31 15:21, , 6F
會啊,你應該填NaN而不是把它刪掉
05/31 15:21, 6F

05/31 15:45, , 7F
用NaN就簡單多了 我猜 AA=find(XYans>201);XYans(AA)=NaN
05/31 15:45, 7F

05/31 15:46, , 8F
XYans=reshape(XYans,8281,5,20,20);
05/31 15:46, 8F

05/31 17:03, , 9F
To RESHAPE the number of elements must not change.
05/31 17:03, 9F

05/31 17:04, , 10F
它出現這樣~>"<
05/31 17:04, 10F
文章代碼(AID): #1C0deslL (MATLAB)