Matlab 将[ ]变成NaN

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab 将[ ]变成NaN相关的知识,希望对你有一定的参考价值。

如上图所示,在这个矩阵里,有的地方是[],我想把是[]的地方变成NaN(如第9行那样),语句应该怎么写呢?
因为数据的量非常大,所以无法一个一个的改

请会的朋友教下我,分不多了,但是真心感谢了~~
“我想把是[]的地方变成NaN(如第9行那样)”写错了,第9行也没有变

总之就是希望[]的地方都填上NaN

请教我一下这个语句,感谢~~

参考技术A 明白你的意思,应该可以实现的,只是没有你的数据
你的数组trs是cell的吧,我先模拟了一个数组,包含[]:
clear all;clc;
N=20;
for ii=1:N
Aii=eye(4);
end
for jj=1:N
if rem(jj,2)==0
Ajj=[];
end
end
------------------------后面的部分,用NaN把[]替换掉:
for kk=1:N
if isempty(Akk)==1
Akk=NaN;
end
end本回答被提问者和网友采纳
参考技术B 逻辑上讲,这么做是不太可能的吧?
空数组[]是一个数组,NaN是一个名字叫做非数的数。。。两者之间不能直接通过命令替换

如果你能提供这些空数组是怎么出现的,或许可以在程序中直接生成NaN

用 NaN 替换矩阵的某些元素(MATLAB)

【中文标题】用 NaN 替换矩阵的某些元素(MATLAB)【英文标题】:Replace certain elements of matrix with NaN (MATLAB) 【发布时间】:2013-09-25 21:06:08 【问题描述】:

我有一个向量,A。

A=[3,4,5,2,2,4;2,3,4,5,3,4;2,4,3,2,3,1;1,2,3,2,3,4]

A 中的某些记录必须替换为 NaN 值,因为它们不准确。 我创建了向量 rowid,它记录了必须保留的最后一个值,之后必须将现有值交换为 NaN。

rowid=[4,5,4,3]

所以我希望创建的向量 B 如下所示:

B=[3,4,5,2,NaN,NaN;2,3,4,5,3,NaN;2,4,3,2,NaN,NaN;1,2,3,NaN,NaN,NaN]

我不知道如何做到这一点。我试过用

A(:,rowid:end)

开始从向量 A 中选择数据。我希望能够使用 sub2ind 或某种 idx 来执行此操作,可能是一个 if 循环,但我不知道从哪里开始,也找不到合适的类似的问题可以作为我思考的基础!

非常感谢任何提示/指针,非常感谢

【问题讨论】:

似乎您在这里有两个单独的问题,最好将它们分成不同的帖子.. 确实,我会删除关于 10% 的段落,如果您遇到困难,请在单独的问题中提出。 【参考方案1】:

如果您还不是 matlab 专家,我现在会坚持使用简单的 for 循环:

B = A;
for i=1:length(rowid)
    B(i, rowid(i)+1:end) = NaN;
end

将它写成单行代码总是一种运动(参见 Mohsen 的回答),但在许多情况下,显式的 for 循环会更清晰。

【讨论】:

【参考方案2】:

一个紧凑的是:

B = A;
B(bsxfun(@lt, rowid.', 1:size(A,2)))=NaN;

【讨论】:

+1 但肯定应该是B(bsxfun(@lt, rowid.', 1:size(A,2)))=NaN;

以上是关于Matlab 将[ ]变成NaN的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB应用实战系列(七十一)-MATLAB实战应用案例:图像处理将灰度图片变成负片&彩色图片转换成灰度图片

MATLAB应用实战系列(七十一)-MATLAB实战应用案例:图像处理将灰度图片变成负片&彩色图片转换成灰度图片

matlab创建一个字符串“Iamastudent”将字符串全变成大写字母,拆分截取出 字

如何用matlab将彩色图片变成黑白图片

matlab中怎么把图像变成灰度图

matlab 画图的时候,如何将向上的y轴坐标变成向下的?