2017-06-18 115 views
5

我想繪製一些關於分鐘的數據,而不是以Matlab的格式化時間秒,即min.sec作爲格式化時間(分鐘)的分鐘繪圖

我有收到每個樣本的實時數據流,它的時間也以秒爲單位發送。然後,我會根據時間繪製它們。現在,由於我的會議時間長達15分鐘左右,所以我不能在時間上進行陰謀。因此我想根據時間繪製它(min.sec)。我試着將收到的時間除以60,但是這給了我100分鐘而不是60分鐘的分鐘(0.9999而不是0.59分鐘增量)。我如何轉換它,以便我能夠在幾分鐘內就時間進行繪圖?

這裏是我的意思是由0.99分鐘而不是0.59分鐘。正常分鐘有60個部門沒有100 enter image description here

編輯: 我試圖m7913d的建議,這裏是我得到了什麼。

  1. 第一I相對於繪製信號以時間(秒)而不改變

  2. 的I加入datetick('x', 'mm:ss');的情節(XTICK格式並不在Matlab 2015B支持)

    蜱(A正常plot(t,v)

下面是結果enter image description here

的屏幕截圖在幾秒鐘的時間爲至多80秒s,當翻譯成分鐘時,它應該給我1分20秒作爲最大x軸限制。但這種情況並非如此。我試圖構建一個t矢量(即像t=0:seconds(3):minutes(3)),但我無法將其鏈接到我的秒矢量,它將隨着從串口收到新樣本而不斷更新。 感謝

+0

編輯:閱讀錯誤的問題。你可以請發佈給你100個細分而不是60個代碼嗎?只需將時間向量設置爲在60秒後遞增:'t = 0:60:(60 * 15)'。 –

+0

我的時間向量不是由我設置的,它是從一個微控制器記錄下來的,它持續發送每個樣本,並以秒爲單位。這就是爲什麼我不能設置t = 0:60:(60 * 15)。此外,持續時間最長爲15分鐘,但也可能較短。我目前的做法是將每次收到的時間讀數除以60,但這給了我每分鐘0.99分鐘的增量分數(我將更新顯示該圖的問題) – Isra

+0

這是繪圖視圖---您的樣本不是實際上排隊與該網格(所以你的代碼是正確的,但視圖不是你想要的)。您只需更改'XTick'軸屬性以將刻度線放在需要的位置,並且網格將與該線相符。例如。 '設置(GCA, 'XTICK',啓動:增量:結束);'。 –

回答

1

您可以使用xtickformat如下指定你的X標籤所需的格式:

% generate a random signal (in seconds) 
t = 0:5:15*60; 
y = rand(size(t)); 

plot(seconds(t),y) % plot your signal, making it explicit that the t is expressed in seconds 
xtickformat('mm:ss') % specify the desired format of the x labels 

請注意,我用的seconds方法,它返回一個duration對象,以指示Matlab的那t是以秒錶示。

上述腳本的輸出是(右側的圖像是左圖像的縮放版本):

enter image description here enter image description here

預R2016b

人們可以使用datetime代替xtickformat如下:

datetimes = datetime(0,0,0,0,0,t); % convert seconds to datetime 
plot(datetimes,y) 
datetick('x', 'MM:SS'); % set the x tick format (Note that you should now use capital M and S in the format string 
xlim([min(datetimes) max(datetimes)]) 
+0

我嘗試了你剛剛解釋過的內容,並得到了相同的輸出,而不是0.59的0.99分區。我的時間來自串口,而不是像(t = 0:5:15 * 60;)那樣設置。每秒鐘,我有250個採樣(250Hz採樣頻率)。 – Isra

+0

你是否收到錯誤信息?提供[mcve]以顯示與我的代碼的區別可能很有用。 – m7913d

+0

我已經編輯了所有你問的問題 – Isra