How to use text file data as input to matlab code?
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
Hello, I need to use data in text file as a input to my matlab code. The data format in text file is as follows(each row has 4 columns: 1 for time, 2 for st. number, 3&4 are velocity components), Sample data:
Time St. DA DB
0 33 38.55 -10.87
2 33 37.35 -84.84
4 10 37.22 -62.29
6 43 37.39 -41.00
8 43 37.00 -19.75
I need to compare the time and st. number value with the values in my matlab code and pick 3&4 accordingly for further analysis. Any inputs are welcome.
採用された回答
Try using textscan. You should read the documentation and pay attention to the option HeaderLines, and how FormatSpec is defined.
It is also important to use fopen and fclose, something like this:
fid = fopen('mydata.txt','rt');
C = textscan(fid,'%s %s %f32 %d8 %u %f %f %s %f');
fclose(fid);
This might be interesting to read too:
8 件のコメント
Shree
2015 年 1 月 5 日
Thank you!
Stephen23
2015 年 1 月 5 日
Please do try it. If this solves your problem, you can click "Accept" for this answer. If the problem is unresolved, please explain what is not working.
Hey I am able to display rows bur not able to access exact value. I got 2 errors as follows.
1. fid = fopen('projectdata.txt','rt');
C = textscan(fid,'%n %n %n %n');
fclose(fid);
celldisp(C)
disp (C(1,1))
ans: [385x1 double]
But I need to access value at that location. How to get that value displayed?
2. fid = fopen('projectdata.txt','rt');
C = textscan(fid,'%n %n %n %n');
fclose(fid);
celldisp(C)
if C(1,1)==40
disp(C(1,2))
end
Error: Undefined function 'eq' for input arguments of type 'cell'.
So you might have something a bit like this:
fid = fopen('temp.txt','rt');
C = textscan(fid,'%f%f%f%f', 'HeaderLines',1);
fclose(fid);
Then you can access the data in C like this:
C{1} % The first column of data
...
C{4} % The fourth column of data
You could even merge all of the data into one numeric array, which would probably be easier to works with:
C = [C{:}];
Shree
2015 年 1 月 5 日
How can I access a specific element? For example : 4th row and 2nd column
Is there a specific syntax to do that?
Because I am still not able to do operation like,
if C(1,1)==40
disp(C(1,2))
end
This is because I am not able to access the number at that position and instead I am accessing the ans '[384x1 double]'
Is there any way to solve this?
If you try the code that I recommended at the bottom of my last comment
C = [C{:}];
then you will end up with a simple numeric matrix, and you can use the indexing as you show in your comment:
if C(1,1)==40
...
end
FYI: the function textscan returns a cell array. You can read about cell arrays and how to index into them here .
Shree
2015 年 1 月 5 日
Thank you so much!
If you want a table instead of a cell array, you can simply do
t = readtable(filename);
No need for fopen(), a format string, and fclose. I think it's a lot simpler but it requires release R2013b or later.
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Data Import and Export についてさらに検索
タグ
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
