问题原因: 由于你的系统中装了一个福昕阅读器(或其他pdf阅读器),该程序占用了excel的com端口,所以当Matlab再去调用这个端口时就会出现异常。
解决方法:打开任意一个Excel文件,点击文件——选项——加载项——点击下方的管理旁边的下拉菜单,选择COM加载项——点击转到——把福昕阅读器的前面的勾去掉,然后确定。你重新回到MATLAB读取Excel文件试试,应该就可以了。
如和原作者所说,一定要去掉 foxreader的com端口占用,否则就是读不出来。如下图:
付参考代码:
x = xlsread('E:/prj/ok_20181119_1130/matlab/line_cal.xlsx','sheet1','B3:B17');
y = xlsread('E:/prj/ok_20181119_1130/matlab/line_cal.xlsx','sheet1','C3:C17');
注意斜杠的写法,/
可以看出,数据读出来了
付全部测试代码:
%线性拟合
%y = xlsread('line_cal1.xlsx','sheet1','C3:C17');
%x=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; %滤波器电压
%y=[303.5,351.74,391.934,428.1,468.3,500.4577,532.6129,2593,2697.4];%滤波器频率
%x = xlsread('line_cal.xlsx','sheet1','B3:B17');
x = xlsread('E:/prj/ok_20181119_1130/matlab/line_cal.xlsx','sheet1','B3:B17');
y = xlsread('E:/prj/ok_20181119_1130/matlab/line_cal.xlsx','sheet1','C3:C17');
p=polyfit(x,y,1); % polyfit是曲线拟合函数
x1=linspace(min(x),max(x)); %linspace 是用来生成一个等差数列的lin是linear的缩写,就是将生成一个以a和b为断点 共划分为n个区间的向量
y1=polyval(p,x1); % polyval是求值函数,可求得多项式在x1处的值y1
plot(x,y,'*',x1,y1); % plot是画图函数,将两个图花在一起
%Polyfit--调用方法:polyfit(x,y,n)。用多项式求过已知点的表达式,其中x为源数据点对应的横坐标,可为行向量、矩阵,y为源数据点对应的纵坐标,可为行向量、矩阵,n为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况而定。
%polyfit 做出来的值从左到右表示从高次到低次的多项式系数,给出系数的个数是n+1。
领取专属 10元无门槛券
私享最新 技术干货