Re: 如何使用if迴圈
※ 引述《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
07/01 14:19, 1F
討論串 (同標題文章)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章