求助:如何选出矩阵中符合条件的列?
A为一个22*100的随机矩阵,B为一个22*2的矩阵,矩阵B中的两列分别为列向量的下限和上限,要求从矩阵A中选出列向量,选出的列向量满足B的范围要求。试问这段程序该怎么编啊?请各位大侠不吝赐教,小生先在此谢过了! 原帖由 miniducky 于 2006-9-14 21:43 发表
A为一个22*100的随机矩阵,B为一个22*2的矩阵,矩阵B中的两列分别为列向量的下限和上限,要求从矩阵A中选出列向量,选出的列向量满足B的范围要求。试问这段程序该怎么编啊?
请各位大侠不吝赐教,小生先在此谢 ...
看不懂,举个具体例子吧
问题重新描述
A=,B=,A、B矩阵的行数均为22,现在要从A中选取一些满足条件的列,条件为B1<Ai<B2,列向量Ai中的每个值都要在B1、B2对应行所构成的范围内。这些满足条件的列向量构成C矩阵。 原帖由 miniducky 于 2006-9-15 08:56 发表A=,B=,A、B矩阵的行数均为22,现在要从A中选取一些满足条件的列,条件为B1<Ai<B2,列向量Ai中的每个值都要在B1、B2对应行所构成的范围内。这些满足条件的列向量构成C矩阵。
按照你说的,C能否构成一个矩阵也成问题,因为每行对应的列数不一定相同,除非C是Cell类型 function bijiao(A,B)
for i=1:100 % 100对应A的列数
C1=A(:,i)>B(:,1);
C2=A(:,i)<B(:,2);
if sum(C1)+sum(C2)==44 % 44对应A的行数的二倍
C(:,:)=A(:,i);
save C C;
end
end 原帖由 miniducky 于 2006-9-15 08:56 发表
A=,B=,A、B矩阵的行数均为22,现在要从A中选取一些满足条件的列,条件为B1<Ai<B2,列向量Ai中的每个值都要在B1、B2对应行所构成的范围内。这些满足条件的列向量构成C矩阵。
写了一个简单的,你看是否你要的结果:
A = randn(5,10);
B = randn(5,2);
C = cell(5,1);
for i = 1:5
ind = find(A(i,:) > B(i,1) & A(i,:) < B(i,2));
C{i} = A(i,ind);
end
C 我后来自己摸索着这样编的:
把B的两列分成两个列向量,分别为Bmin、Bmax
=size(A);
L=(A>=REP(Bmin,)&(A<=REP(Bmax,))); %L为比较过后得到的一个逻辑矩阵
H=H(all(a)); %用all函数选出符合条件的列
这样好像是可以的 原帖由 miniducky 于 2006-9-14 21:43 发表
A为一个22*100的随机矩阵,B为一个22*2的矩阵,矩阵B中的两列分别为列向量的下限和上限,要求从矩阵A中选出列向量,选出的列向量满足B的范围要求。试问这段程序该怎么编啊?
请各位大侠不吝赐教,小生先在此谢 ...
之前那个有点错误,改了下,应该符合你字面上的意思了。
function bijiao(A,B)
j=0;
for i=1:4
C1=A(:,i)>B(:,1);
C2=A(:,i)<B(:,2);
if sum(C1)+sum(C2)==6
j=j+1;
C(:,j)=A(:,i);
end
end
save C C
查看C就是你要的矩阵,要查看就load C 学习下哦
页:
[1]