read a text file
1 回表示 (過去 30 日間)
古いコメントを表示
Postit123
2020 年 11 月 4 日
回答済み: Pratheek Punchathody
2020 年 11 月 18 日
Hi
I need to make a matrix with the text file attached below.
I've considered 'fscanf' and 'readtable'.
But I faced 2 problems.
Some of rows have 8 elements while others have 10.
Also, there are blank cells and I don't know how to handle this to make it 0.
Thanks.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/402920/image.png)
1 件のコメント
Walter Roberson
2020 年 11 月 4 日
See https://www.mathworks.com/help/matlab/ref/matlab.io.text.fixedwidthimportoptions.html
採用された回答
Pratheek Punchathody
2020 年 11 月 18 日
As per my understanding it is required to create a matrix/table from the data present in the text file.
For the demo purpose I have taken the sample text file which has different number of columns in each row and there are multiple empty cells in each row.
Considering the sample text file with the data as shown below.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/418098/image.jpeg)
Below is the code I have used to import the text file to a matrix.
opts = detectImportOptions('same.txt', 'EmptyLineRule','skip','ExtraColumnsRule','ignore');
opts.MissingRule = 'fill';
opts = setvaropts(opts,'FillValue',0); %fill the empty cells with the value 0
myTable = readtable('same.txt',opts); %create table from the .txt file
myMatrix=table2array(myTable); %create from the table
Below image shows the output matrix of the data present in the text file.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/418103/image.jpeg)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/418108/image.jpeg)
“table2array()” function is used to convert the created table to matrix format.
As required, all the empty cells adn extra column cells are filled with 0.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!