質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

621閲覧

グラフの縦軸を抜き出してプロットしたい

water28

総合スコア5

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/11/05 09:05

ご覧いただきありがとうございます。
縦軸が時間で横軸が周波数で電界強度が色で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

実行結果
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki23

2021/11/05 10:19

> 1分ごと最初の10秒だけをプロットしたい とは、1枚のグラフに10秒のデータをプロットするという意味ですか?
water28

2021/11/05 10:56

説明不足で申し訳ありません。 1枚のグラフに1-10秒,61-70秒・・・というようにつなげてプロットしたいです。
guest

回答1

0

ベストアンサー

こんな感じでどうですか?

matlab

1time = (0:60:3600*hour-10); 2(中略) 3Pwater1=P40day(2500:7500,hourstart*360+1:6:hourfinish*360); 4(中略) 5Pwater1=P60day(2500:7500,hourstart*360+1:6:hourfinish*360);

投稿2021/11/05 23:38

yuki23

総合スコア1448

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

water28

2021/11/08 01:01

回答ありがとうございます。 その他何箇所か変えたらできました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問