最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

(備份)MATLAB腦波繪圖(基于SleepSign2.0)

2023-03-09 22:35 作者:錒天霸動霸羽  | 我要投稿

本教程中SleepSign的FFT導出參數(shù)設置為:

total time = 60min

time division = epoch time = 4 s

display range = 0.0 - 29.75 Hz

(參數(shù)不一致也沒事)

?

1、使用SleepSign的text output和FFT功能,分別導出電壓與頻率的txt文件

?

2、將附件中的代碼根據(jù)自身需要調整后,全選復制進MATLAB命令行窗口,回車運行

?

?

選擇剛才導出的txt文件即可

?

時頻圖可根據(jù)實際情況選擇繪制原圖或擬合后的平滑圖,詳見代碼黃底字內容。參考效果如下


原圖(n=1)

?

平滑圖(n=10)


?

3、時頻圖顏色深度可在坐標區(qū)屬性中自行修改

?

?

?

?

4、點擊“文件”→“另存為”,保存為svg矢量圖

?

?

可以先在MATLAB里畫好草圖,再根據(jù)需求將svg圖片導入Adobe Illustrator進一步修補美化


附件

EEG、EMG信號圖+時頻熱圖代碼

注:

1. “%”后為此串代碼的中文注釋,黃底字為通常需要改動的參數(shù)

2. 軟件版本為MATLAB R2019b

close all;

clear;

%清空所有圖窗;清空工作區(qū)數(shù)據(jù)

?

figure('position',[300,20,800,800]);

%創(chuàng)建圖窗,設置位置和大小[與屏幕左側間距,與屏幕下側間距,長,寬]。默認單位為像素,尺寸會受屏幕縮放影響

?

?

?

%%%%%%%%%%第一部分 繪制EEG與EMG信號圖%%%%%%%%%%

?

if logical(1)

%選擇是否運行這部分代碼,1為運行,0為不運

?

[filename,pathname] = uigetfile({'*.txt'},'選擇要打開的信號文件');

if pathname==0

return;

end

%保存選定文件的名稱和路徑,若未選取文件,則直接結束代碼避免報錯

?

signal=importdata(fullfile(pathname,filename),' ',18);

%從該文件中讀取數(shù)據(jù)(文件路徑,列分隔符,從第18行后開始讀?。?/span>

?

yEEG=400;

yEMG=200;

%設置EEG、EMG信號圖的波幅顯示范圍

?

EEG=axes('position',[0.15,0.8,0.7,0.1]);

%設置坐標軸位置[與figure左側間距百分比,與figure下側間距百分比,長占figure百分比,寬占figure百分比]

?

plot(signal.data(:,1),'linewidth',0.5,'Color',[0,0,0]);

%繪制EEG信號圖,設置線寬,顏色[R,G,B]

?

text(0,0,'EEG ?','HorizontalAlignment','right','FontSize',16,'FontName','Arial');

%在坐標軸左側添加文字“EEG”,設置字號,字體

?

xlim([1,size(signal.data,1)]);

%設置x軸顯示范圍[起始坐標,終止坐標]

?

ylim([-yEEG,yEEG]);

%設置y軸顯示范圍[起始坐標,終止坐標]

?

EEG.XAxis.Visible='off';EEG.YAxis.Visible='off';

%隱藏XY軸

?

EMG=axes('position',[0.15,0.725,0.7,0.075]);

%設置坐標軸位置[與figure左側間距百分比,與figure下側間距百分比,長占figure百分比,寬占figure百分比]

?

plot(signal.data(:,2),'linewidth',0.5,'Color',[0,0,0]);

%繪制EMG信號圖,設置線寬,顏色[R,G,B]

?

text(0,0,'EMG??','HorizontalAlignment','right','FontSize',16,'FontName','Arial');

%在坐標軸左側添加文字“EMG”,設置字號,字體

?

xlim([1,size(signal.data,1)]);

%設置x軸顯示范圍[起始坐標,終止坐標]

?

ylim([-yEMG,yEMG]);

%設置y軸顯示范圍[起始坐標,終止坐標]

?

EMG.XAxis.Visible='off';EMG.YAxis.Visible='off';

%隱藏XY軸

?

end

%對應開頭if logical的結束

?

?

?

%%%%%%%%%%第二部分 繪制EEG時頻圖%%%%%%%%%%

?

if logical(1)

%選擇是否運行這部分代碼,1為運行,0為不運行

?

n=1;

%自定義熱圖的平滑倍數(shù),1為原圖

?

[filename,pathname] = uigetfile({'*.txt'},'選擇要打開的時頻文件');

?

if pathname==0

return;

end

%若未讀取文件,則直接結束代碼避免報錯

?

tic;disp('正在繪制時頻熱圖,請稍后...');

%開始計時,n越大耗時越長

?

freq=importdata(fullfile(pathname,filename),' ',20);

%從選定txt文件中讀取數(shù)據(jù)(文件路徑,列分隔符,從第20行后開始讀取)

?

freq.data(:,1)=[];

%刪除freq第一列

?

axes('position',[0.15,0.6,0.7,0.12]);

%設置坐標軸位置[與figure左側間距百分比,與figure下側間距百分比,長占figure百分比,寬占figure百分比]

?

freq.data(freq.data==0)=min(min(freq.data));

%將freq.data中的0值修改為非0的最小值,在減少結果變動的前提下避免報錯

?

dB=10*log10(freq.data);

%將功率數(shù)據(jù)換算為分貝(dB)

?

f=1:1:size(dB,1);

%列出原文件導出的頻率段數(shù),記為表f

?

F=1:1/n:size(dB,1);

%列出平滑后的頻率段數(shù),記為表F

?

t=1:1:size(dB,2);

%列出原文件導出的時間段數(shù),記為表t

?

T=1:1/n:size(dB,2);

%列出平滑后的時間段數(shù),記為表T

?

A=zeros(0,0);

%創(chuàng)建空白數(shù)值矩陣A

?

for n=1:size(dB,2)

%開始循環(huán),循環(huán)次數(shù)為dB的時間段數(shù)

?

An=spline(f,dB(:,n),F);

%計算平滑頻率后每段時頻對應的分貝,記為An

?

A=[A;An];

%將得到的n行An合成到矩陣A

?

end

%結束循環(huán)

?

B=zeros(0,0);

%創(chuàng)建空白數(shù)值矩陣B

?

for n=1:size(A,2)

%開始循環(huán),循環(huán)次數(shù)為A的頻率段數(shù)

?

Bn=spline(t,A(:,n),T);

%在A的基礎上,計算平滑時間后每段時頻對應的分貝,記為Bn

?

B=[B;Bn];

%將得到的n行Bn合成到矩陣B

?

end

%結束循環(huán)

?

dB=B;disp(['擬合完畢,耗時',num2str(toc),'秒']);

%將最終的擬合結果覆蓋到矩陣dB;顯示耗時

?

tfgraph=flipud(dB);imagesc(tfgraph);

%垂直翻轉矩陣dB,記為tfgraph(time frequency graph);繪制時頻圖

?

xlabel('Times (s)','FontSize',16,'FontName','Arial');

%設置x軸標題,字號,字體

?

ylabel('Freq (Hz)','FontSize',16,'FontName','Arial');

%設置y軸標題,字號,字體

?

set(gca,'xtick',[1,0.25*size(tfgraph,2),0.5*size(tfgraph,2),0.75*size(tfgraph,2),size(tfgraph,2)],'xticklabel',["0","600","1200","1800","2400","3000","3600"]);

%設置部分x軸刻度對應顯示指定文字

?

set(gca,'ytick',[1,0.5*size(tfgraph,1),size(tfgraph,1)],'yticklabel',["30","15","0"]);

%設置部分y軸刻度對應顯示指定文字

?

set(gca,'FontSize',14,'FontName','Arial','ticklength',[0,0],'box','off','colormap',(jet));

%設置坐標字號,字體,隱藏刻度線,關閉邊框,使用jet顏色圖

?

set(colorbar,'position',[0.865,0.6,0.02,0.12],'FontSize',12,'FontName','Arial','ticklength',0,'box','off');

%設置垂直顏色欄的位置,字號,字體,隱藏刻度線,關閉邊框

?

end

%對應開頭if logical的結束

?


(備份)MATLAB腦波繪圖(基于SleepSign2.0)的評論 (共 條)

分享到微博請遵守國家法律
恩平市| 南郑县| 甘洛县| 故城县| 厦门市| 醴陵市| 扎赉特旗| 石家庄市| 永和县| 富顺县| 聂荣县| 琼中| 休宁县| 自治县| 遵化市| 蒙山县| 北安市| 留坝县| 瓮安县| 潜山县| 宁都县| 通河县| 横峰县| 香港 | 岳西县| 古浪县| 应城市| 苏州市| 岳阳市| 朔州市| 乌苏市| 凤阳县| 巴南区| 江津市| 神木县| 泗阳县| 临邑县| 东丽区| 兴山县| 宾阳县| 遂溪县|