【for文】txt.インポートとの併用は可能か

2 views (last 30 days)
TAIKI
TAIKI on 30 Aug 2023
Edited: TAIKI on 31 Aug 2023
添付した「test...2225.m」のように、現在10000行2列のtxt.のデータインポートをし、グラフをプロットしている者です。
毎回11個のファイルをいちいち書き出すのは面倒と感じています。
そこでtxt.に番号を振り分け(添付したPNGファイルのように)、以下のようにforループにすれば良いと考えたのですが、うまく行かない模様です。
インポートされたファイルはfor文に入れられないのでしょうか。
import用のファイルも添付したので、どなたかご協力をお願い致します。
startRow = 1;
endRow = inf;
for n=1:11
[An(:,1),An(:,2)] = importfile('20230829_m_1_n.txt', startRow, endRow);
%
end
figure(1)
plot(A1(:,1),A1(:,2),A2(:,1),A2(:,2),A3(:,1),A3(:,2),A4(:,1),A4(:,2),A5(:,1),A5(:,2),A6(:,1),A6(:,2),A7(:,1),A7(:,2),A8(:,1),A8(:,2),A9(:,1),A9(:,2),A10(:,1),A10(:,2),A11(:,1),A11(:,2)),
legend('0','0.05','0.1','0.15','0.2','0.25','0.3','0.35','0.4','0.45','0.5'),
xlabel('Wauelengthcnm(nm)'), ylabel('Pawer(dBm)'),

Answers (1)

Atsushi Ueno
Atsushi Ueno on 30 Aug 2023
> インポートされたファイルはfor文に入れられないのでしょうか
いいえそんな事はありません。問題の原因はファイル名の文字列を期待通りに作成出来ていない事です。下記の様に sprintf 関数を用いて、文字列の中に変数の値を取り込む事が出来ます。
startRow = 1;
endRow = inf;
for n = 1:11
filename = sprintf('20230829_m_1_%d.txt', n)
% fclose(fopen(filename, 'w')); % 実験用に空ファイルを作成
[An(:,1),An(:,2)] = importfile(filename, startRow, endRow);
end
filename = '20230829_m_1_1.txt'
filename = '20230829_m_1_2.txt'
filename = '20230829_m_1_3.txt'
filename = '20230829_m_1_4.txt'
filename = '20230829_m_1_5.txt'
filename = '20230829_m_1_6.txt'
filename = '20230829_m_1_7.txt'
filename = '20230829_m_1_8.txt'
filename = '20230829_m_1_9.txt'
filename = '20230829_m_1_10.txt'
filename = '20230829_m_1_11.txt'
  1 Comment
TAIKI
TAIKI on 31 Aug 2023
Edited: TAIKI on 31 Aug 2023
ご回答ありがとうございます。
spirit関数で文字列の中に変数を取り込めるんですね。助かります。
ただしまだ不明なところがあります。
最終的には、
filename = '20230829_m_1_1.txt'
filename = '20230829_m_1_2.txt'
:
filename = '20230829_m_1_11.txt'
からそれぞれ100001×2のグラフを作成し、「2023…question2.PNG」のように一つのプロットに11個載せるようにしたいです。(PNGは全てfilenameを書き出してごり押しで作成)
しかし以下のCODEだと、「2023…question3.PNG」のようにfilenameは'20230829_m_1_11.txt'しか作成されておらず、importfileの列ベクトルAnは表示すらされていないです。
filenameを20230829_m_1_1~11.txtまで作り、importfileの列ベクトルAnをA1,A2,...A11までやるには、いかに何を追加すればよろしいでしょうか。
startRow = 1;
endRow = inf;
for n = 1:11
filename = sprintf('20230829_m_1_%d.txt', n)
fclose(fopen(filename, 'w')); % 実験用に空ファイルを作成
[An(:,1),An(:,2)] = importfile(filename, startRow, endRow);
end
figure(1)
plot(An(:,1),An(:,2))
legend('0','0.05','0.1','0.15','0.2','0.25','0.3','0.35','0.4','0.45','0.5'),
xlabel('Wauelengthcnm(nm)'), ylabel('Pawer(dBm)'),

Sign in to comment.

Categories

Find more on 2 次元および 3 次元プロット in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!