How to correctly use dlmread to read a large matrix in m-file?

1 次查看(过去 30 天)
I saved a 11-by-100001 matrix as a m-file with dlmwrite. Then I read the m-file with dlmread, but the matrix in Matlab became a column vector that had the length of 11*100001=1100011.
How can I correctly read the matrix back in Matlab? My Matlab version is 7.10.0. Thank you!
If you would like to see how the error happens, try the following code:
M = rand(11,100001);
dlmwrite('matrix_m.m',M)
LM = dlmread('matrix_m.m');
You'll see LM in workspace is a 1100011x1 column vector.
  6 个评论
Yu-Yun
Yu-Yun 2013-11-14
编辑:Yu-Yun 2013-11-14
I used .m as the extension because I didn't know .csv is better for saving matrix. :P
I just tried .csv. Unfortunately, it doesn't work for Matlab 7.10.0. I think I should start using save to save my data. Anyway, thanks a lot for the help!
dpb
dpb 2013-11-14
In Matlab, the 'm-file' is the storage for source files -- naming data files with the extension makes them visible to the parser as if they were source files so, amongst other unexpected results is that you could cause failure of a function or script by aliasing a real function of the same name.
Specifically what caused the difference here is unclear to me as it didn't occur this morning when I tried to document a case to send to TMW as a bug report.
I got the one-column "solution" on both cases -- peculiar, indeed.
I did look at the two files on disk--they're identical and do have the newline character after the rows so ML should be able to determine the shape from the data and other than the namesearch problem above the file extension should not have any bearing.
It's a bug IMO, whether TMW will think it serious-enough given the length of the record to take under consideration I don't know.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Get Started with MATLAB 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by