0

我有一个按以下格式设置的 .txt 文件:

7
8
9
10

我正在尝试做的是将文件中的数字读入数组,然后检查我从不同函数获得的数字是否包含在该数组中。

ismember(ruleFunc{x+1},memFunc}

我很确定它将检查 ruleFunc 中的元素是否在数组 memFunc 中,如果存在或不存在则返回 1/0。但是我无法让 ismember 函数正常工作,因为我用来填充 memFunc 数组的方法是错误的。

此外,如何在新行的 .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 回答