Value associate to a parameter in a text
显示 更早的评论
So I have a text file similar to the following:
DELZZ 3301.23
KUTY 4.32 SERI -0.023
I want Matlab to read the file and return values associate to each parameter (DELZZ, KUTY,SERI,...) Any suggestion?
采纳的回答
data = fileread('mytextfile.txt');
val = regexp(data,'(?<=\s)(-?\d*\.?\d*)(?=\s|$)','match');
7 个评论
what does -?\d+\.?\d+ do?
- -? Matches a negative sign optionally.
- \d+ Matches digits.
- \. Matches a decimal point optionally.
- \d+ Matches more digits.
The output is:
val:
{'3301.23'} {'4.32'} {'-0.023'}
If you need to perform numerical calculations you need to convert the character vectors to doubles:
val = cellfun(@str2double,val);
Does that help you?
Thank you so much. And the last question, what if the name of parameters contained number, like
KUTY01 33.02
Fuzzy10 -0.923
or is it possible to ask Matlab: go ahead and find a value in front of a particular parameter? like find the value in front of "KUTY01" and it returns 33.02
If you wanted the result for a specific case, i.e. KUTY01, you can use:
(?<=KUTY01\s)-?\d+\.?\d+
The first part of the regular expression (?<=KUTY01\s) is a positive lookbehind.
As you can see here, it checks backwards to see if pattern KUTY01, followed by whitespace, is found. If it is, it matches the sequence of digits, decimal point and digits as explained in the previous comment. As you can see, only 33.02 is now matched.
If you found the answer useful consider accepting it/voting :)
it seems this command doesn't read a single digit number like
KUTY01 5
is that right?
That's right, you will need to use the greedy * quantifier rather than the + quantifier. Since you need to match those values too, use:
(?<=KUTY01\s)-?\d*\.?\d*
I'll update my answer.
Thank u so much
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Characters and Strings 的更多信息
另请参阅
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
