在Matlab中将NaN替换为非常长的字符串的Null

clo*_*viz 1 sql matlab

我有一个非常长的字符串,我想找到所有的NaN值并将其替换为'Null'.这个长字符串是从120 x 150000单元格转换而来的.将它转换为长字符串的原因是我要将它转换为一个巨大的SQL查询,因为fastinsert和datainsert可能非常慢,有时候我的堆空间已经用完了.我们的想法是做到以下几点

exec(sqlConnection, long_string) 
Run Code Online (Sandbox Code Playgroud)

我尝试使用regexpreop将NaN替换为null,但似乎非常慢.有替代方法吗?

long_string = regexprep(long_string,'NaN','null');
Run Code Online (Sandbox Code Playgroud)

pm8*_*m89 5

正如Floris所说,这regexp是一个非常强大的命令,因此比其他查找命令慢.

除了Floris的建议,你可以尝试使用strrep哪种方法适用于你的情况,因为你没有使用任何特殊的权力regexp.

这是一个例子:

str = char('A' + rand(1,120 * 15000)*('z'-'A'));

tic
str2 = strrep(str, 'g', 'null');
disp('strrep: '), toc

tic
str3 = regexprep(str, 'g','null');
disp('regexprep: '), toc
Run Code Online (Sandbox Code Playgroud)

在我的电脑上它将返回:

strrep: 
Elapsed time is 0.004640 seconds.
regexprep: 
Elapsed time is 4.004671 seconds.
Run Code Online (Sandbox Code Playgroud)

  • 三件事的+1:"strrep"的建议,时间示例,以及生成随机字符串的绝佳方式!时间随着字符串的长度变化很多,它看起来......(越长越快 - 去图). (2认同)