Re: 如何使用if迴圈

看板MATLAB作者 (Time)時間6年前 (2017/06/28 09:41), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《RevelationSD (少冰半糖)》之銘言: : Matlab新手發問,如有冒犯請見諒 : 我有一個12*48的矩陣,有幾個無意義的數字 : 我想要將這些數字取代成我要的數字 : 例如-999999要去除 : -999998要以nan取代 : -999997要以0取代 : 請問該如何以if的迴圈來寫,卡了一個晚上還是寫不出來.... 借用例子讓小弟練習一下,如果其他好的方法,敬請不吝指教。 我簡化問題為: 矩陣裡小於-5的值(n<-5)取代為Nan, 大於等於-5但小於等於0的值(-5<=n<=0)取代為 0。 作法如下: clear;clc; data = randi(100, 12, 48)-10; % 產生資料矩陣 [m,n] = find(data < -5); nan_data = data; % 方便完成計算後對照,可省略 for i = 1:length(m) nan_data(m(i),n(i)) = nan; end [mm,nn] = find(-5 < data & data <= 0); zero_nan_data = nan_data; % 方便完成計算後對照,可省略 for j = 1:length(mm) zero_nan_data(mm(j),nn(j)) = 0; end zero_nan_data = nan_data; 如原文推文所提示,find可以output出row和column的值, 所以只需要一層迴圈就可以,而且不會影響矩陣大小。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 192.31.105.129 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1498614105.A.6CA.html

07/01 14:19, , 1F
用matlab要學習避開迴圈
07/01 14:19, 1F
文章代碼(AID): #1PKmbPRA (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1PKmbPRA (MATLAB)