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

1 visualización (últimos 30 días)
TAIKI
TAIKI el 30 de Ag. de 2023
Editada: TAIKI el 31 de Ag. de 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)'),

Respuestas (1)

Atsushi Ueno
Atsushi Ueno el 30 de Ag. de 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 comentario
TAIKI
TAIKI el 31 de Ag. de 2023
Editada: TAIKI el 31 de Ag. de 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)'),

Iniciar sesión para comentar.

Categorías

Más información sobre 2 次元および 3 次元プロット en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!