Load text file with open braket ( )

Dear all,
I have a txt file in the format like:
(70.0362+32052.7j)
(-1.16529e-12+29239.2j)
(-1.42109e-13+26859.3j)
...
Then I used the following code:
fid = fopen('ImpedanceMatrix1.txt','r');
A = textscan(fid,'%s');
fclose(fid);
A = A{:};
However, it doesn't remove the brackets in the variable. Could you please suggest me how to do that. Thanks.

3 件のコメント

Stephen23
Stephen23 2018 年 3 月 22 日
編集済み: Stephen23 2018 年 3 月 22 日
Why are you reading a file with numeric data using a string format? Why not just read the numeric data directly using a numeric format? Reading the data as a string and the post-processing (e.g. using regular expressions) is going to be quite inefficient.
Shan  Chu
Shan Chu 2018 年 3 月 22 日
Hi sir, I am not good at Matlab. I used Load before but it doesn't work. Could you please suggest which function that I could use? Thanks
Stephen23
Stephen23 2018 年 3 月 22 日
編集済み: Stephen23 2018 年 3 月 22 日
@Shan Chu: I did not write that you should use a different function. I wrote that you should import numeric data using a numeric format, not a string format: these are clearly explained in the textscan documentation. Currently you use '%s', which imports data as a string (a char vector), but instead simply import your data using %f, which will be much more efficient than what you do now. Check my answer to see how simple this is.

サインインしてコメントする。

 採用された回答

Birdman
Birdman 2018 年 3 月 22 日

0 投票

Try this:
regexprep(A,{'(',')'},{'',''})

8 件のコメント

Shan  Chu
Shan Chu 2018 年 3 月 22 日
Thank you sir. it works perfectly
Birdman
Birdman 2018 年 3 月 22 日
You are welcome.
Shan  Chu
Shan Chu 2018 年 3 月 22 日
Btw, I tried to use cell2mat to convert it to math type but it doesn't work. Could you please help?
Birdman
Birdman 2018 年 3 月 22 日
Just simply
str2double(regexprep(A,{'(',')'},{'',''}))
Shan  Chu
Shan Chu 2018 年 3 月 22 日
I see, The type is string not double. Thanks sir
Birdman
Birdman 2018 年 3 月 22 日
;-)
Stephen23
Stephen23 2018 年 3 月 22 日
See my answer for a more efficient solution.
Birdman
Birdman 2018 年 3 月 22 日
Yes, I saw as usual :)
But it is only a bit of more code in my case, of course your solution is more efficient.

サインインしてコメントする。

その他の回答 (1 件)

Stephen23
Stephen23 2018 年 3 月 22 日
編集済み: Stephen23 2018 年 3 月 22 日

0 投票

It is much more efficient to import the data using a numeric format (rather than as a string and doing post-processing as you are doing now). My test file is attached (you did not provide a sample file).
[fid,msg] = fopen('temp5.txt','rt');
assert(fid>=3,msg)
C = textscan(fid,'(%f)');
fclose(fid);
Giving:
>> C{1}
ans =
7.0036e+001 + 3.2053e+004i
-1.1653e-012 + 2.9239e+004i
-1.4211e-013 + 2.6859e+004i

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

タグ

質問済み:

2018 年 3 月 22 日

コメント済み:

2018 年 3 月 22 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by