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



我已经创建了一个具有名称模式的空数组,现在我正在读取一个生成字符串的文件,我想要将每个字符串保存在变量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
以上是代码

您需要为此使用单元格,因此括号的正确类型是{},而不是[]。当整个文本保存在单元格数组中时,您可以使用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)

如果你的字符串有不同的长度,那么你应该把它们保存在一个单元格数组中。

%// 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

现在你可以用pattern{1}访问你的第一个模式,用pattern{2}访问第二个模式…

最新更新