我有一些数据,我想从中获取一些信息。但是,我遇到了一些问题,我很乐意得到专家的帮助。
数据和一些信息:
A = [1 0 -1 2 0 1;0 2 1 0 1 -2;1 1 0 2 1 1]%matrix
B = [1 3]#rows 1 and 3 are rows for searching.
struc.names = ['blue', 'red', 'green', 'amber', 'grey','yellow']% a structure of column names.
required.names = {'blue', 'green', 'grey','yellow'}; % a structure of required column names
我尝试获取以下 3 种类型的信息:
第一:获取并保存行子集的矩阵。
第二:与struc.names相比,我想获得一个与感兴趣的列(required.names)相对应的向量(填充1或0)
第三:对于第 1 行和第 3 行,当行元素不为零时,查找 struc.names 和 required_rows 之间的匹配项;还要根据匹配的数量安排结果输出。
问题1:
code for getting matrix:
struc.names = {'blue', 'red', 'green', 'amber', 'grey','yellow'};
required_rows = [1 3];
for k = 1:length(required_rows);
% open file for writing
fid =fopen('ouput.txt','w');
idx(k,:) = A(required_rows(k),:);
fprintf(fid,'%d \n',idx);#print matrix
end;
获得的输出:
1 0 -1 2 0 1 1 1 0 2 1 1
所需输出:
1 0 -1 2 0 1
1 1 0 2 1 1
问题 2:与 struc.names 比较时,获取 required.names = {'blue', 'green', 'grey','yellow'} 的列向量;
我想在如下向量中获取 1(存在列名)和 0(不存在列名): [1 0 1 0 0 1]; 我不确定如何编写代码。
问题 3:当行元素非零时,查找 struc.names 和 required_rows 之间的匹配,然后获得根据匹配数排列的排序结果的代码。代码:
struc.names = ['blue', 'red', 'green', 'amber', 'grey','yellow']# a structure of column names.
required.names = {'blue', 'green', 'grey','yellow'}; # a structure of required column names
struc.names = {'blue', 'red', 'green', 'amber', 'grey','yellow'}
required_rows = [1 3];
% open file for writing, and Loop
fid=fopen('file.txt','w+');
for K = 1 : length(required_rows);
idx = A(required_rows(K),:) ~= 0;
if any(idx)
struc.names = struc.names(idx)
C = intersect(struc.names ,required_rows)
fprintf(fid, 'row A(%d,:) has the following matches:\n');
fprintf(fid, '%s ', C{idx} );
fprintf(fid, '\n');
end
end
fclose(fid);
所需的排序输出(根据匹配数):
row 3: blue red amber grey yellow
row 1: blue green amber yellow
谢谢