为什么textscan不会读取所有行matlab

时间:2016-02-11 07:16:49

标签: matlab textscan

我有一个包含5列的文本文件。以下是示例数据:

@foreach (var item in Model.Items)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Product_ID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Product_Title)
        </td>               
    </tr>
}

第一列包含字符,其他列只是数字。该文件包含多行。我试图读取.txt如下;

book   1  3  5  7
paper  3  9  0  2
pen    3  1  2  0
pencil 9  0  3  9

它正确读取了列。但是,它只读取第一行,而不是全部。为什么会这样?如果我想读取所有行和所有列,该怎么办。谢谢

1 个答案:

答案 0 :(得分:2)

我假设您要创建一个单元格数组,其中每个单元格都包含文本文件中的单个元素 您目前提供的代码是正确的:

fileID = fopen('filename.txt');
C = textscan(fileID,'%s %n %n %n %n');
fclose(fileID);

但是现在C中的每个单元格都包含txt文件中的整个列: enter image description here
其中C{1,1}包含第一列,即四个字符串(书,纸,笔,铅笔)。

现在是时候了解&#34;解开&#34;这样的细胞使用这段代码:

for i=1:size(C,2)
    if(iscell(C{:,i}))
        A(:,i)=reshape(C{:,i},length(C{:,i}),1);
    else
        A(:,i)=num2cell(reshape(C{:,i},length(C{:,i}),1));
    end
end

基本上说&#34;如果单元格包含一个单元格(请参阅C{1,1}),只需在length(C{:,i})个不同的单元格中打开其内容。相反,如果单元格包含数组,则将此数组的每个元素分配给不同的单元格。&#34;。
现在,单元格数组A的格式为

enter image description here

我希望这是你正在寻找的。