Re: 如何使用if迴圈

作者: sblk (Time)   2017-06-28 09:41:36
※ 引述《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的值,
所以只需要一層迴圈就可以,而且不會影響矩陣大小。
作者: sunev (Veritas)   2017-07-01 14:19:00
用matlab要學習避開迴圈

Links booklink

Contact Us: admin [ a t ] ucptt.com