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