binary into matlab workspace
5 ビュー (過去 30 日間)
古いコメントを表示
I have a large number of bin files that I'm converting and importing the data into the matlab workspace into variable X for processing. Data is a column of numbers.
X=convert(i,pwd);
convert is a function which converts binary files in pwd directory and pulls out column i from each file and concatenates and puts into X.
What I'd like to do is
when length(X) = length(files(pwd)/2; or some value set by me
Create X1=convert(i,pwd); <-- but start i where X left off and not from begining of bin file. And so on for X2
So Id like to basically split X into X1 X2 .... which are individually small enough to fit into memory and then process them.
If I could somehow pause the execution and redirect where convert stores data without disturbing anything else.
0 件のコメント
採用された回答
Walter Roberson
2011 年 11 月 21 日
Sorry, you are going to have to "disturb" your code interface to handle that. For example, you could have convert() output a second output that was the ftell() value of the place it left off reading, and convert() could take an second input that would be a maximum length, and a third input that would be an fseek() position to start from.
Putting the length constraint to the actual reading should not be difficult; there is an optional size parameter for fread().
2 件のコメント
Walter Roberson
2011 年 11 月 21 日
Yes, you are definitely going to need to "disturb" that interface. You want to break the data when "number of files divided by 2" *samples* have been read, even though each file might contain thousands of samples. For example if there were 10 files in the directory, you have asked to break after 10/2 = 5 *samples*, which would be like 2048 variables if each of the 10 files contained 1024 samples.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Search Path についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!