matlab中data=NaN.*ones(rx,cx);这一句子中NaN.*ones什么意思?
答案:1 悬赏:0 手机版
解决时间 2021-02-24 23:12
- 提问者网友:雪舞兮
- 2021-02-24 10:21
matlab中data=NaN.*ones(rx,cx);这一句子中NaN.*ones什么意思?
最佳答案
- 五星知识达人网友:深街酒徒
- 2021-02-24 11:15
首先,rx和cs肯定是两个数值。可以相同,也可以不同。
然后ones(rx,cx) 就是产生一个rx行cs列的全1矩阵。
那么NaN.*ones(rx,cx)的意思就是NaN乘以ones(rx,cx)里面的每个数得到一个新的矩阵。
当然,你要注意,NaN的意思是不是一个数的意思。是NOT A NUMBER 的缩写。
举个例子:
ones(2,3)
ans =
1 1 1
1 1 1
>> NaN.*ones(2,3)
ans =
NaN NaN NaN
NaN NaN NaN
当然,你会问,这个不是一个数是什么意思。这个矩阵这样有什么意义?所有的元素都不是一个数有意义吗??
1.数据处理时,在实际工程中经常数据的缺失或者不完整,此时我们可以将那些缺失设置为nan,Matlab处理缺失的数据时就会跳过或者其他处理——这个是Matlab优越于其他语言的表现之一。另外但读取数据时,某个字符不是数据,那么Matlab自动将它认为nan处理
比如Matlab中提供的nanmean, nanmax, nanmin, nanstd, nansum, nanvar这么多函数可以处理包含nan的数据
2.还有就是绘图的时候,如果我们想挖掉一部分,那么nan就起作用了
比如我们要绘制z=x^2+y^2在[-10 10]区域的图形但是要挖掉x
[x,y]=meshgrid(-10:0.1:10);
z=x.^2+y.^2;
subplot(121)
mesh(x,y,z)
sel=x
z(sel)=nan;
subplot(122)
mesh(x,y,z)
然后ones(rx,cx) 就是产生一个rx行cs列的全1矩阵。
那么NaN.*ones(rx,cx)的意思就是NaN乘以ones(rx,cx)里面的每个数得到一个新的矩阵。
当然,你要注意,NaN的意思是不是一个数的意思。是NOT A NUMBER 的缩写。
举个例子:
ones(2,3)
ans =
1 1 1
1 1 1
>> NaN.*ones(2,3)
ans =
NaN NaN NaN
NaN NaN NaN
当然,你会问,这个不是一个数是什么意思。这个矩阵这样有什么意义?所有的元素都不是一个数有意义吗??
1.数据处理时,在实际工程中经常数据的缺失或者不完整,此时我们可以将那些缺失设置为nan,Matlab处理缺失的数据时就会跳过或者其他处理——这个是Matlab优越于其他语言的表现之一。另外但读取数据时,某个字符不是数据,那么Matlab自动将它认为nan处理
比如Matlab中提供的nanmean, nanmax, nanmin, nanstd, nansum, nanvar这么多函数可以处理包含nan的数据
2.还有就是绘图的时候,如果我们想挖掉一部分,那么nan就起作用了
比如我们要绘制z=x^2+y^2在[-10 10]区域的图形但是要挖掉x
z=x.^2+y.^2;
subplot(121)
mesh(x,y,z)
sel=x
subplot(122)
mesh(x,y,z)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯