matlab导入dxf数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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=dt1,1(1:f);
A=transpose(str2num(char(dt1,1(f+1:end))));
for ilength=1:(length(dt1,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=dt1,1(1:f);
A=transpose(str2num(char(dt1,1(f+1:end))));
for ilength=1:(length(dt1,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
登录后复制
参考技术A 1/6
按照需要的格式整理好【txt】数据文本放在程序目录下。

2/6
打开【matlab】点击上方工作区的【导入】数据选项按钮。

3/6
屏幕弹出路径下的文件选择【选择准备的txt文件】导入。

4/6
进入导入视图面板查看【数据整理】格式检查数据。

5/6
点击变量名称区域修改变量保存的名称。

6/6
点击右上角导入数据查看【工作区】变量已经输入成功。

DXF板框导入PADS2005后无法设置为板框

参考技术A pads中的板框是一个闭合框,而导入的dxf是没有闭合的线段,所以在dxf文档里要先处理一下才可以,原始的办法还是按照已有的线段画一个闭合的板框好了 参考技术B 全部选中线条,点右键选联合命令!将其合并为一个整体,这时才可以在属性中将其设为边框! 参考技术C 1、用autocad打开dxf文件(默认单位为mm),利用缩放工具将其放大39.37倍后保存。
2、打开pads
layout,默认单位mil,导入刚刚保存的dxf文件,就可以了。
祝你成功!

以上是关于matlab导入dxf数据的主要内容,如果未能解决你的问题,请参考以下文章

PADS导入DXF出错问题,超出坐标最大值是啥意思啊?

allegro中怎么导入dxf文件

ad10导入dxf文件

dxf文件导入pcb怎么不全

allegro pcb导入dxf外框尺寸变大一倍是怎么回事

向allegro中导入DXF