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

1 回表示 (過去 30 日間)
TAIKI
TAIKI 2023 年 8 月 30 日
編集済み: TAIKI 2023 年 8 月 31 日
添付した「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)'),

回答 (1 件)

Atsushi Ueno
Atsushi Ueno 2023 年 8 月 30 日
> インポートされたファイルは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 件のコメント
TAIKI
TAIKI 2023 年 8 月 31 日
編集済み: TAIKI 2023 年 8 月 31 日
ご回答ありがとうございます。
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)'),

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

カテゴリ

Help Center および File Exchange2 次元および 3 次元プロット についてさらに検索

Community Treasure Hunt

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

Start Hunting!