matlab中cell的第一列的某行的值只要等于矩阵里面的值就保留cell的某行的信息,否则删除。
答案:3 悬赏:0 手机版
解决时间 2021-01-03 17:33
- 提问者网友:王者佥
- 2021-01-03 03:31
假设cell为A,A有3列,40多万行,A的每行每列都是数字,矩阵B是400行2列的矩阵。A的第一列跟矩阵B的第一列进行比较,只要等于B的第一列的数就保留A该行的信息,否则删除该行信息。
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-01-03 04:51
举个例子吧,就算100万行道理也一样:假设A为6x3cell,B是4x2矩阵,都是数值,
A =
[1] [2] [ 3]
[4] [5] [ 6]
[7] [8] [ 9]
[2] [3] [ 4]
[5] [6] [ 7]
[8] [9] [10]
B =
1 2
3 4
5 6
7 8
现在要把A中第一列的所有不包含1/3/5/7的行删掉:1/3/5/7是B的第一列。代码如下。看结果。
%===================================
A = {1,2,3;4,5,6;7,8,9;2,3,4;5,6,7;8,9,10};
B = [1 2;3 4; 5 6;7 8];
d = [];
for i=1:size(A,1)
if ismember(A{i,1},B(:,1))==0
d = [d,i];
end
end
A(d,:) = [];
%===================================
结果为(只有开头是1/5/7的行被保留了,4/2/8的行被删了)
A =
[1] [2] [3]
[7] [8] [9]
[5] [6] [7]
A =
[1] [2] [ 3]
[4] [5] [ 6]
[7] [8] [ 9]
[2] [3] [ 4]
[5] [6] [ 7]
[8] [9] [10]
B =
1 2
3 4
5 6
7 8
现在要把A中第一列的所有不包含1/3/5/7的行删掉:1/3/5/7是B的第一列。代码如下。看结果。
%===================================
A = {1,2,3;4,5,6;7,8,9;2,3,4;5,6,7;8,9,10};
B = [1 2;3 4; 5 6;7 8];
d = [];
for i=1:size(A,1)
if ismember(A{i,1},B(:,1))==0
d = [d,i];
end
end
A(d,:) = [];
%===================================
结果为(只有开头是1/5/7的行被保留了,4/2/8的行被删了)
A =
[1] [2] [3]
[7] [8] [9]
[5] [6] [7]
全部回答
- 1楼网友:不甚了了
- 2021-01-03 06:16
matlab可以用whos查询当前所有变量的类型和大小
例如:
name size bytes class attributes
a 1x1 8 double
b 3x4 96 double
- 2楼网友:青尢
- 2021-01-03 05:38
这应该能实现,请把数据发我,给你编程、调试。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯