你好,请教一下matlab coder相关问题 调用了曲线拟合函数lsqcurvefit不能被编译器编译,希望不吝赐教 20
是有关matlabcoder的问题,写了几行曲线拟合的代码但是想编译成C++出错。我简化了一下。functionquxiannihez=xlsread('C:\Users...
是有关matlab coder的问题,写了几行曲线拟合的代码但是想编译成C++出错。我简化了一下。
function quxiannihe
z=xlsread('C:\Users\Administrator\Desktop\A.xlsx','M:M');
aa=size(z,1);
bb=0.001*aa;
cc=0.001:0.001:bb;
x=cc';
y=z;
g=@(a,x)(a(1).*sin(a(2).*x+a(3))+a(4));
a0=[0.012,250,-2,511];
a=lsqcurvefit(g,a0,x,y);
picture=plot(x,y,'k.',x,g(a,x),'r');
set(picture,'LineWidth',1.5);
legend('原始数据','拟合数据');
print(1,'-djpeg','C:\Users\Administrator\Desktop\拟合图像1.jpeg');
disp(a)
错误显示是
coder
-build quxiannihe.prj
??? The function 'xlsread' is
not supported for standalone code generation. See the documentation for
coder.extrinsic to learn how you can use this function in simulation.
Error
in ==> Untitled2
Line: 2 Column: 3
Code generation failed: Open
error report.
就是“g=@(a,x)(a(1).*sin(a(2).*x+a(3))+a(4));”这一行。后面是“a0=[0.012,250,-2,511];
a=lsqcurvefit(g,a0,x,y);”。就是这个lsqcurvefit函数无法编译
A.xlsx是一个有数据的excel文件,
我有几个问题想请问
1、要想编译成功,估计要吧这个整个曲线拟合的lsqcurvefit函数在程序里面写出来,请问这个怎么操作?还是有别的办法呢?
2、z=xlsread('C:\Users\Administrator\Desktop\A.xlsx','M:M');(或者像z=load('C:\Users\Administrator\Desktop\A.txt');)这一行也不能编译,请问怎么处理才能正确编译?
我看到您解答了很多问题,大神中的超级大神,因此想向您请教一下。非常感谢。 展开
function quxiannihe
z=xlsread('C:\Users\Administrator\Desktop\A.xlsx','M:M');
aa=size(z,1);
bb=0.001*aa;
cc=0.001:0.001:bb;
x=cc';
y=z;
g=@(a,x)(a(1).*sin(a(2).*x+a(3))+a(4));
a0=[0.012,250,-2,511];
a=lsqcurvefit(g,a0,x,y);
picture=plot(x,y,'k.',x,g(a,x),'r');
set(picture,'LineWidth',1.5);
legend('原始数据','拟合数据');
print(1,'-djpeg','C:\Users\Administrator\Desktop\拟合图像1.jpeg');
disp(a)
错误显示是
coder
-build quxiannihe.prj
??? The function 'xlsread' is
not supported for standalone code generation. See the documentation for
coder.extrinsic to learn how you can use this function in simulation.
Error
in ==> Untitled2
Line: 2 Column: 3
Code generation failed: Open
error report.
就是“g=@(a,x)(a(1).*sin(a(2).*x+a(3))+a(4));”这一行。后面是“a0=[0.012,250,-2,511];
a=lsqcurvefit(g,a0,x,y);”。就是这个lsqcurvefit函数无法编译
A.xlsx是一个有数据的excel文件,
我有几个问题想请问
1、要想编译成功,估计要吧这个整个曲线拟合的lsqcurvefit函数在程序里面写出来,请问这个怎么操作?还是有别的办法呢?
2、z=xlsread('C:\Users\Administrator\Desktop\A.xlsx','M:M');(或者像z=load('C:\Users\Administrator\Desktop\A.txt');)这一行也不能编译,请问怎么处理才能正确编译?
我看到您解答了很多问题,大神中的超级大神,因此想向您请教一下。非常感谢。 展开
1个回答
展开全部
我只是将读取数据改成随机生成20个,结果
function quxiannihe
z=rand(20,1);
aa=size(z,1);
bb=0.001*aa;
cc=0.001:0.001:bb;
x=cc';
y=z;
g=@(a,x)(a(1).*sin(a(2).*x+a(3))+a(4));
a0=[0.012,250,-2,511];
a=lsqcurvefit(g,a0,x,y);
picture=plot(x,y,'k.',x,g(a,x),'r');
set(picture,'LineWidth',1.5);
legend('原始数据','拟合数据');
print(1,'-djpeg','C:\Users\Administrator\Desktop\拟合图像1.jpeg');
disp(a)
结果只是有警告,拟合效果不是很好,循环400次后,只是说效果不好(早熟),但是有值。说明程序没有问题。
Solver stopped prematurely.
lsqcurvefit stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 400 (the default value).
-0.6868 -12.1817 28.8048 0.2286
所以只可能是读取出错。看你的代码应该是下面第一种,我建议用第二种方法试一下(因为我不确定'M:M'是不是会智能到没有数字的时候结束,我一般都是指定从哪个单元格到哪个单元格),指明是第几个sheet。如果还不行,打开excel看看数据对不对。
num = xlsread(filename,xlRange)
num = xlsread(filename,sheet,xlRange)
function quxiannihe
z=rand(20,1);
aa=size(z,1);
bb=0.001*aa;
cc=0.001:0.001:bb;
x=cc';
y=z;
g=@(a,x)(a(1).*sin(a(2).*x+a(3))+a(4));
a0=[0.012,250,-2,511];
a=lsqcurvefit(g,a0,x,y);
picture=plot(x,y,'k.',x,g(a,x),'r');
set(picture,'LineWidth',1.5);
legend('原始数据','拟合数据');
print(1,'-djpeg','C:\Users\Administrator\Desktop\拟合图像1.jpeg');
disp(a)
结果只是有警告,拟合效果不是很好,循环400次后,只是说效果不好(早熟),但是有值。说明程序没有问题。
Solver stopped prematurely.
lsqcurvefit stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 400 (the default value).
-0.6868 -12.1817 28.8048 0.2286
所以只可能是读取出错。看你的代码应该是下面第一种,我建议用第二种方法试一下(因为我不确定'M:M'是不是会智能到没有数字的时候结束,我一般都是指定从哪个单元格到哪个单元格),指明是第几个sheet。如果还不行,打开excel看看数据对不对。
num = xlsread(filename,xlRange)
num = xlsread(filename,sheet,xlRange)
追问
当然也有这个问题。但是主要是请教怎么编译成C语言的问题。谢谢,希望继续回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询