我之前写了一些代码将3列拆分为4,但代码效率非常低且耗时。当我使用数百万行时,它不合适。 (以下是我以前的代码)
tline = fgetl(fid);
ID=tline(1:4);
IDN = str2double(ID);
Day=tline(6:8);
DayN = str2double(Day);
HalfHour=tline(9:10);
HalfHourN = str2double(HalfHour);
Usage=tline(12:end);
UsageN = str2double(Usage);
必须有更高效,更快捷的方法吗?
回到基础,我制作了一个x乘3的矩阵。但需要x乘4矩阵
要显示我想要做的事情,请检查一行 - 我想改变
1001 36501 1005
到
1001 365 01 1005
非常感谢任何帮助!
编辑:
我试图分成两部分的第二列总是由5个字符组成。我试图将前3个字符放入他们自己的列中,同样用于剩下的字符。
答案 0 :(得分:1)
在你的情况下需要花费时间实际上是使用str2double函数。众所周知,当数据集很大时,这种内置函数变得非常慢。如果可能的话,你可能会试图摆脱它。
答案 1 :(得分:0)
你可以使用modulo
ans =(36501 - mod(36501,100))/ 100 这会给你365
如果你想要1,那就是mod(36501,100)
所以这会有效地将你的第二列分成两个不同的数字,然后你可以重新命名等等。
嗯,第二个想法,如果你的第二列上的所有数字都是5位数,这可能非常有效,因为mod是在matlab中通过b = a - m。* floor(a./m)计算的;检查http://uk.mathworks.com/help/matlab/ref/mod.html它应该适用于矢量(即第二列)