0

次の形式で設定された.txtファイルがあります。

7
8
9
10

私がやろうとしていることは、ファイルから配列に数値を読み込んでから、別の関数から取得した数値がその配列に含まれているかどうかを確認することです。

ismember(ruleFunc{x+1},memFunc}

ruleFuncの要素が配列memFuncにあるかどうかをチェックし、ある場合とない場合は1/0を返すと確信しています。しかし、memFunc配列にデータを設定するために使用している方法が間違っているため、ismember関数を正しく機能させることができません。

さらに、新しい行の.txtファイルに別の番号を追加するにはどうすればよいですか?

編集:

これが私が現在memFuncに入力している方法です。これは、ruleFuncに入力するのと同じメソッドでもあります。

mem=fopen('WorkingMemory.txt');
    tline = fgets(mem); 
    workMem = {}; 
    index = 1; 
while ischar(tline)   
    workMem{index} = str2num(tline); 
    tline = fgets(mem); 
    index = index + 1; 
end
4

2 に答える 2

1

この関数ismemberは、入力が等しい1の行列を返します。(詳細については、ドキュメントを参照してください。)実際には、天気に応じて、または数値がマトリックスにまったく含まれていないかどうかに応じて、1または0の数値を返すものが必要になる場合があります。以下に両方のオプションを含めました。

% read in file
filename = 'my_data.txt';
fid  = fopen(filename);
data = textscan(fid, '%d');
data = data{1};
fclose(fid);

% determine if number is in the file
number = 33;
ismember(data,number) %this returns an array
length(find(data == number)) > 0 % this returns 1 or 0

%write a line to existing file
fid2 = fopen(filename,'a');
newnumber = 100;
fprintf(fid2, '%d\n', newnumber);
fclose(fid2);

今、私はあなたの更新された答えを見ます。そのコードは、各行をセル配列の異なるセルに読み込みます。すべてのデータをマトリックスに入れたい。textscanセル配列を再配置してデータを行列に入れるか、上記のように使用できます。

コメントに応じて、次のようなifステートメントを作成できます。

if (length(find(data == number)) > 0) 
    'do something'
end
于 2013-03-19T22:43:12.510 に答える
0

たぶん、あなたは実際に数字の代わりに文字列を含む配列を作成していますか?

それがそれほど単純でない場合は、より多くの情報/コードスニペットが役立ちます。memFuncにデータを入力する方法が間違っている可能性があるとおっしゃっていますが、そのコードを投稿できますか?

于 2013-03-19T22:21:22.017 に答える