ご覧いただきありがとうございます。
縦軸が時間で横軸が周波数で電界強度が色で3次元のグラフが出力されるプログラムです。(ウォーターフォール)
例えば時間を1時から2時にすると縦軸が1時から2時の1時間分表示されます。
この縦軸を、1時00分01秒―1時00分10秒,1時01分01秒―1時01分10秒,1時02分01秒-1時02分10秒,・・・,1時59分01秒―1時59分10秒という風に1分ごと最初の10秒だけをプロットしたいのですがなかなかうまくいきません。
while文やfor文、を追加してみたり、plotの設定を変えたりしてみましたが全く糸口が見えません。
ご教授お願い致します。
該当のソースコード
clear;
1%% 初期設定 2folder = 'E:\jjy\'; 3freq = 40; %読み込む周波数 4jiku = 'X'; %読み込む軸(X,Y,Z) 5 6%日付 7year0 = 2020; 8month0 = 01; 9day0 = 29; 10 11%開始時刻 12hourstart = 1; 13%終了時刻 14hourfinish = 23; 15 16hour = hourfinish-hourstart; 17time = (0:10:3600*hour-10); 18f40=(39750:1/10:40250); 19f60=(59750:1/10:60250); 20 21%%メインプログラム 22fileY = num2str(year0,'%02u'); 23fileM = num2str(month0,'%02u'); 24fileD = num2str(day0,'%02u'); 25filefreq = num2str(freq,'%02u'); 26fileNAME = [fileY '年' fileM '月' fileD '日']; 27 28%配列初期化 29Pwater1=single(zeros(5001,360*hour)); 30 31%ファイル読み出し 32datafilename = [folder fileNAME '(' filefreq 'k)' jiku '軸' '.mat']; 33load(datafilename); 34 35 36if freq == 40 37 Pwater1(1:5001,1:360*hour)=P40day(2500:7500,hourstart*360+1:hourfinish*360); 38 fig = mesh(time,f40,Pwater1); 39 ylim([39750 40250]); 40 yticklabels({39.750:0.125:40.250}); 41 yticks(39750:125:40250) 42elseif freq == 60 43 Pwater1(1:5001,1:360*hour)=P60day(2500:7500,hourstart*360+1:hourfinish*360); 44 fig = mesh(time,f60,Pwater1); 45 ylim([59750 60250]); 46 yticklabels({59.750:0.125:60.250}); 47 yticks(59750:125:60250) 48end 49 50%プロット設定 51xlim([0 3600*hour-10]); 52xticks(0:3600*3-10:3600*hour-10); 53xticklabels({hourstart:3:hourfinish}); 54xlabel('時刻'); 55ylabel('周波数 [kHz]'); 56view(90,90); 57 58%カラーマップ設定 59c = colorbar; 60c.Label.String = '電界強度[dBμV/m]'; 61load('E:\waterfall\mycolormap.mat'); 62colormap (ccl); 63caxis([50 70]); 64 65%ファイル保存設定 66figname = [fileNAME]; 67title(figname); 68fileNAME2= [folder fileNAME 'waterfall(' filefreq 'k)' jiku '軸']; 69print(fileNAME2,'-dpng','-r300'); 70 71
回答1件
あなたの回答
tips
プレビュー