情報を取得したいデータがあります。ただし、専門家の助けを借りて喜んでいるいくつかの問題に遭遇しました.
データといくつかの情報:
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種類の情報を取得しようとしました。
最初: 行のサブセットの行列を取得して保存します。
2 番目: struc.names と比較して、対象の列 (required.names) に対応するベクトル (1 または 0 が入力された) を取得したい
3 番目: 行 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 0 1]; のようなベクトルで 1 (列名が存在する) と 0 (列名が存在しない) を取得したい。コードの書き方がわかりません。
問題 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
ありがとうございました