如何将变量赋值给未知长度的数组

时间:2014-08-20 10:31:25

标签: arrays matlab variables

我创建了一个名为pattern的空数组,现在我正在读取一个生成字符串的文件,每个字符串我想要保存在变量p中。我希望模式显示在MATLAB命令窗口中。分配给P的行应以数组模式存储。

pattern=[]
while ~isnan(l)
        p=fgetl(fp);
pattern=(pattern,p[])
end

你能帮忙吗,我觉得我做错了分配模式。因为它不会得到结果

pattern = [];
while(~feof(fid))
    l = fgetl(fid);
    idx = regexp(l, '^information$');
    if size(idx,1)>0
        l = fgetl(fid); 
        while ~isnan(l)
            p = fgetl(fid);
        end 
    end
end

以上是代码

2 个答案:

答案 0 :(得分:2)

您需要使用cells,因此正确的括号类型为{},而不是[]。当整个文本保存在单元格数组中时,您可以使用cellfundisp的组合来显示它。

这样的事情应该有效:

fid = fopen('textfile.txt');

p = fgetl(fid);
pattern = {p}
while ischar(p)
    p = fgetl(fid);
    pattern = [pattern; {p}];
end

fclose(fid);
cellfun(@disp, pattern)

答案 1 :(得分:1)

如果您的字符串长度不同,那么您应该将它们保存在单元格数组中。

%// create empty cell array
pattern=cell(0) 

while ~isnan(l)
    p=fgetl(fp);

    %// save in cell array
    pattern{end+1} = p

    %// show in command window
    disp(p) 
end

现在您可以使用模式{1}访问第一个模式,使用模式{2} ...

访问第二个模式