❶ matlab導入dxf數據
MATLAB 如何導入.txt文本
在matlab GUI的學習中,需要導入各種格式的.txt文件,心血來潮想總結一波。
首先,利用uigetfile選擇文件位置,代碼命令如下:
[filename, pathname] = uigetfile({'*.xls;';'*.txt';'*.xlsx;'; }, '導入數據',...
'MultiSelect','off'); % 不允許同時選擇多個文件
if isequal(filename,0)
disp('User selected Cancel')
else
disp(['User selected', fullfile(pathname, filename)]) %當返回了一個文件的時候,可以用fullfile將路徑和文件名組合起來
end
登錄後復制
在此列舉一種比較復雜的情況,有中文表頭的數據文件(在此列舉滾動軸承的信號數據,數據量比較大):
MATLAB 導入.txt文本的幾種方式:
1.fopen搭配textscan
file=fullfile(pathname, filename); % 導入.txt文件
f=fopen(file); %以只讀模式打開混合格式文本文件
dt=textscan(f,'%s'); %採用textscan 讀取數據
登錄後復制
對於數據量大的文本文件推薦使用textscan,不推薦使用textread函數讀取數據。
在此種情況下,導入的數據格式如下:
可以自行調整得到文本及數據。代碼如下(可能不甚高明,歡迎小夥伴指教):
因為涉及到cell型數據向double類型的數據轉換,略有一丟丟麻煩。
FaultLayer=dt{1,1}(1:f);
A=transpose(str2num(char(dt{1,1}(f+1:end))));
for ilength=1:(length(dt{1,1})/f-1)
data(ilength,1:4)=A((ilength-1)*f+1:ilength*f);
end
登錄後復制
得到結果如下:
2.利用impordata導入數據
datatable = importdata(file); %載入txt數據(只導入數據)
data = datatable.data; %讀取非元胞的數據
登錄後復制
此代碼只導入數據,格式與.txt文本文件相同,與上一方法經過轉換後得到的格式相同,如下圖所示,對於只導入數據的文本文件十分簡便。
3.採用load函數
貌似只能導入數據文件,這個不是十分清楚。
file=fullfile(pathname, filename); % 導入.txt文件
num=load(file) ;
[m,n]=size(num);
登錄後復制
導入的數據如下圖所示:
最後提醒一點,當導入.txt文本時,中文出現亂碼時,在前面添加以下代碼即可解決。
feature('DefaultCharacterSet', 'UTF8'); % 使得matlab支持utf-8編碼
登錄後復制
另外,我之前編寫GUI代碼的時候,對於可以導入.txt和.xls的多種文件格式的處理感到十分疑惑,具體的數據處理並不相同,如何才能區別導入的是何種文件呢?最後我瞎搞,弄了一個復雜的方法解決,希望有小夥伴告訴我怎麼解決(期待.jpg)
if isempty(findstr(filename,'.txt'))==0 % 為空,結果為1
feature('DefaultCharacterSet', 'UTF8'); % 使得matlab支持utf-8編碼
file=fullfile(pathname, filename); % 導入.txt文件
f=fopen(file); %以只讀模式打開混合格式文本文件,列數
dt=textscan(f,'%s'); %採用textscan 讀取數據
FaultLayer=dt{1,1}(1:f);
A=transpose(str2num(char(dt{1,1}(f+1:end))));
for ilength=1:(length(dt{1,1})/f-1)
data(ilength,1:4)=A((ilength-1)*f+1:ilength*f);
end
flag_load=true;
else
if (isempty(findstr(filename,'.xlsx'))==0||isempty(findstr(filename,'.xls'))==0 )
[num,txt,raw] = xlsread(filename,-1); %導入.xlsx文件 或.xls文件
[m,n]=size(num);
flag_load=true;
else
string=strcat(pathname,filename);
errordlg(string+"讀取失敗,請檢查文件格式!",'錯誤提示');
end
end
登錄後復制