Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 在单元格数组中查找负值_Matlab_Cell - Fatal编程技术网

Matlab 在单元格数组中查找负值

Matlab 在单元格数组中查找负值,matlab,cell,Matlab,Cell,我有以下单元格的数据 行{1} ans= '1000.0 -7 NaN NaN 70' '995.0 32 11.0 6.9 -7' '962.0 313 8.8 6.2 84' '925.0 640 6.2 5.5 95' 我将测试第2、3、5列是否有负值,然后删除相关行。在这种情况下,结果将是: 962.0 313 8.8 6.2 84 9

我有以下单元格的数据

行{1}

ans=

'1000.0    -7    NaN    NaN    70'     
'995.0     32   11.0    6.9    -7'    
'962.0    313    8.8    6.2    84'  
'925.0    640    6.2    5.5    95'  
我将测试第2、3、5列是否有负值,然后删除相关行。在这种情况下,结果将是:

962.0    313    8.8    6.2     84  
925.0    640    6.2    5.5     95  
我更新了我的帖子,因为我删除了一些行,然后我可以转换成数字矩阵,但我收到了消息:“使用cat时出错。” 被连接矩阵的维数不一致。”

M=cell2mat(C)
M(~any(M(:,[2,3,5])
M=cell2mat(C)

M(~any(M(:,[2,3,5])我假设你有一个矩阵的单元格数组

column_ = [2 3 5];
out1 = cellfun(@(a)({a((~any(a(:,column_)<0,2)),:)}),lines);
column_235;=[2 3 5];

out1=cellfun(@(a)({a(~any(a)(:,column_u))我假设你有一个矩阵的单元格数组

column_ = [2 3 5];
out1 = cellfun(@(a)({a((~any(a(:,column_)<0,2)),:)}),lines);
column_235;=[2 3 5];

out1=cellfun(@(a)({a(~any(a)(:,column_u))我的猜测是您希望在该单元格中进行迭代,而人们建议您(创建一个普通数组)的方法可能是最好的方法。但是如果您真的需要这样做,下面的代码将完成这项工作:

clear; clc;

lines{1}=['1000.0    -7    NaN    NaN    70',  
'995.0     32   11.0    6.9    -7',    
'962.0    313    8.8    6.2    84',  
'925.0    640    6.2    5.5    95' ]


cols=[2,3,5];                        % Colums to check for negatives

auxdata=str2num(lines{1});
del=sum((auxdata(:,cols)<0)');
indx=1:size(lines{1},1);
del=del.*(1:size(lines{1},1));
del(~del)=[];
lines{1}(del,:)=[];
data=str2num(lines{1})              % non-deleted numerical data
清除;clc;
行{1}=['1000.0-7南南70',
'995.0     32   11.0    6.9    -7',    
'962.0    313    8.8    6.2    84',  
'925.0    640    6.2    5.5    95' ]
cols=[2,3,5];%Colums检查负片
auxdata=str2num(行{1});

del=sum((auxdata(:,cols)我的猜测是您希望在该单元格中进行迭代,而人们建议您(创建一个普通数组)的方法可能是最好的方法。但是如果您确实需要这样做,下面是一个代码:

clear; clc;

lines{1}=['1000.0    -7    NaN    NaN    70',  
'995.0     32   11.0    6.9    -7',    
'962.0    313    8.8    6.2    84',  
'925.0    640    6.2    5.5    95' ]


cols=[2,3,5];                        % Colums to check for negatives

auxdata=str2num(lines{1});
del=sum((auxdata(:,cols)<0)');
indx=1:size(lines{1},1);
del=del.*(1:size(lines{1},1));
del(~del)=[];
lines{1}(del,:)=[];
data=str2num(lines{1})              % non-deleted numerical data
清除;clc;
行{1}=['1000.0-7南南70',
'995.0     32   11.0    6.9    -7',    
'962.0    313    8.8    6.2    84',  
'925.0    640    6.2    5.5    95' ]
cols=[2,3,5];%Colums检查负片
auxdata=str2num(行{1});


del=sum((auxdata(:,cols)这为什么在单元格数组中?你不能将其转换为普通数组吗?你应该将单元格转换为数字矩阵,然后你可以在行上循环,并将每行复制到一个新矩阵,忽略第2、3或5列中的负数(如果有)。或者使用逻辑索引来做同样的事情。但我明确建议将数据复制到一个数字矩阵并使用该矩阵。最后只需将结果矩阵返回到单元格(如果需要)此单元格包含的其他行不是数字或“nan”值,因此我无法将其转换为数字矩阵,但我必须通过lines=textscan(cell2mat(t),“%s”,“delimiter”和“\n”读取它;并只选择一些行。我更新了我的示例,现在我可以将单元格转换为数字矩阵,然后按上述说明删除该行。是的,有空格分隔数字。单元格是由regexp创建的。为什么这在单元格数组中?您不能将其转换为普通数组吗?您应该将单元格转换为数字矩阵a然后你可以循环你的行,并将每一行复制到一个新的矩阵,忽略第2、3或5列中的负数(如果有)。或者使用逻辑索引来做同样的事情。但我建议你将数据复制到一个数字矩阵,并使用该矩阵。最后只需将结果矩阵返回到一个单元格(如果需要)此单元格包含的其他行不是数字或“nan”值,因此我无法将其转换为数字矩阵,但我必须通过lines=textscan(cell2mat(t),“%s”,“delimiter”和“\n”读取它;并仅选择一些行。我更新了我的示例,现在我可以将单元格转换为数字矩阵,然后按上述说明删除该行。是的,有空格分隔数字。单元格是由regexp创建的。我尝试转换单元格,但收到消息“使用被连接矩阵的cat维度时出错不一致"我认为,因为每行末尾没有分号。我如何添加它?您有什么想法或建议吗?@Mixo您应该为您发布的数据提供一个适当的代表性示例。此方法适用于您发布的数据,如果您的数据格式不同,则您应该更新您的示例以反映这一点。我尝试转换我的cell但我收到消息“使用串联矩阵的cat维数时出错不一致”我想是因为每行末尾没有分号。我该如何添加它?你有什么想法或建议吗?@Mixo你应该为你的数据提供一个合适的代表性示例。这种方法适用于你发布的数据,如果你的数据格式不同,那么你应该更新你的示例以反映这一点。在我收到的第一行ve:“未定义的函数'lt'用于'cell'类型的输入参数”。@Mixo在我的代码中没有任何“It”,所以你可能是自己插入的。我只是做了一个复制粘贴…我不理解代码:del=sum((第{1}@Mixo行)你是在复制粘贴我捕获的代码还是修改了什么(例如,插入更多数据或您自己的数据)在我收到的第一行:“未定义函数'lt'用于'cell'类型的输入参数”。@Mixo在我的代码中没有任何“It”,因此您可能是自己插入的。我只是复制并粘贴了……我不理解代码:del=sum((行{1})@Mixo您是在复制粘贴所需的代码,还是修改了某些内容(例如,插入更多数据或您自己的数据)