如何将音符名称和时长列在文本文件中的有理数字符串转换为数字。
例如:
La,1/8
La,1/8
La,1/8
La,1/8
Si,1/4
将文件读入Matlab并逐行获取。
fid=fopen('file.txt');
while 1
tline = fgetl(fid);
if ~ischar(tline), break, end
%disp(tline)
split = strsplit(tline,',');
note=split(1);
timing=str2num(split(2));
end
fclose(fid);
我可以得到第一个数据,也就是音符的字符串。问题在于时间部分。str2num可以将字符串转换为数字,但当它是一个有理数时,如上面的例子,它会返回NaN。 如何获取这些数据,第一个作为字符串,第二个作为有理数?
sym('1/8')
)或将分子和分母分别保存(参见rat
和rats
)。 - horchler