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

2 Ansichten (letzte 30 Tage)
TAIKI
TAIKI am 30 Aug. 2023
Bearbeitet: TAIKI am 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)'),

Antworten (1)

Atsushi Ueno
Atsushi Ueno am 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 Kommentar
TAIKI
TAIKI am 31 Aug. 2023
Bearbeitet: TAIKI am 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)'),

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu グラフィックス オブジェクトの識別 finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!