Matlab:如何创建一个基于特定列值读取矩阵的循环

时间:2014-05-15 08:23:31

标签: matlab matrix

我有一个矩阵如下:

merged = 

'A05'    'a001'
'A06'    'a001'
'B05'    'a001'
'B06'    'a001'
'C01'    'a001'
'C02'    'a001'
'C03'    'a001'
'C04'    'a001'
'C05'    'a001'
'C06'    'a001'
'D01'    'a001'
'D02'    'a001'
'D03'    'a001'
'D05'    'a001'
'D04'    'a001'
'D06'    'a001'
'A03'    'a002'
'A04'    'a002'
'B03'    'a002'
'B04'    'a002'

是否可以制作循环,首先读取a001行,然后在第二轮读取a002

谢谢, 木本

2 个答案:

答案 0 :(得分:0)

查找包含“a001”的行。然后选择这些行的所有列

A = merged(find(merged(:,2)=='a001'),:)

A = merged(find(merged(:,2)=='a002'),:)

或者您可以根据第二列对它们进行排序,然后应用您的for循环

sorted = sortrows(merged,2);
for i=1:1:size(sorted,1)
    % Do what you need
end

sortrows()

上的信息

答案 1 :(得分:0)

请记住,在Matlab中循环解决方案通常很慢, 但如果你想要它,这里有一个变种

tags = {'a001','a002'};
for i=1:length(tags)
  M = merged(strcmp(merged(:,2),tags{i}));
end

然后你可以在每次尝试中操作M