MATLAB如何保存串口读入的数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB如何保存串口读入的数据?相关的知识,希望对你有一定的参考价值。
大体做法如下:1、配置好目的串口号,属性。比如波特率、校验位等。
2、编写串口读写调用函数,其中串口中有个中断机制。
比如s.BytesAvailableFcnMode
=
'terminator';
数据来了就会进入中断,此时你可读取串口数据。不需要通过timer去中。
3、读完关闭串口。 参考技术A 纠正一下你的错误:是RS232。
数据在command
window显示后,可以用save函数保存。
例如:
save
RS232Data.mat
变量名1
变量名2
如果没有变量名,例如:
ans
=
数据
数据
数据
则用:
save
ans
RS232Data.mat
matlab读入和保存obj文件
1、使用matlab读取obj文件:
function [vertex,faces,normal] = read_obj(filename)
fid = fopen(filename);
if fid<0
error(['Cannot open ' filename '.']);
end
frewind(fid);
a = fscanf(fid,'%c',1);
if strcmp(a, 'P')
fscanf(fid,'%f',5);
n_points=fscanf(fid,'%i',1);
vertex=fscanf(fid,'%f',[3,n_points]);
normal=fscanf(fid,'%f',[3,n_points]);
n_faces=fscanf(fid,'%i',1);
fscanf(fid,'%i',5+n_faces);
faces=fscanf(fid,'%i',[3,n_faces])'+1;
fclose(fid);
return;
end
frewind(fid);
vertex = [];
faces = [];
while 1
s = fgetl(fid);
if ~ischar(s),
break;
end
if ~isempty(s) && strcmp(s(1), 'f')
% face
faces(:,end+1) = sscanf(s(3:end), '%d %d %d');
end
if ~isempty(s) && strcmp(s(1), 'v')
% vertex
vertex(:,end+1) = sscanf(s(3:end), '%f %f %f');
end
end
fclose(fid);
2、使用matlab保存obj文件:
function obj_write(filename,vertices,faces )
fid=fopen(filename,'w');
[x,y]=size(vertices);
for i=1:x
fprintf(fid,'v ');
for j=1:y-1
fprintf(fid,'%f ',vertices(i,j));
end
fprintf(fid,'%f\\r\\n',vertices(i,y));%每一行回车\\n
%fprintf(fid,'\\n');%每一行回车\\n
end
fprintf(fid,'\\n');%每一行回车\\n
[x,y]=size(faces);
for i=1:x
fprintf(fid,'f ');
for j=1:y-1
fprintf(fid,'%d ',faces(i,j));
end
fprintf(fid,'%d\\r\\n',faces(i,y));%每一行回车\\n
%fprintf(fid,'\\n');%每一行回车\\n
end
fclose(fid);
end
以上是关于MATLAB如何保存串口读入的数据?的主要内容,如果未能解决你的问题,请参考以下文章