Matlab - 将列拆分为两个(有效)

时间:2015-01-06 11:17:53

标签: matlab matrix

我之前写了一些代码将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个字符放入他们自己的列中,同样用于剩下的字符。

2 个答案:

答案 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它应该适用于矢量(即第二列)