Miney53 2022-10-04 21:39
浏览 331
已结题

#matlab运行问题:错误使用 lsqcurvefit (第 286 行) Function value and YDATA sizes are not equal.

我打算用matlab中的lsqcurvefit拟合拟合我自定义的一个函数,比较复杂,有微分也有积分,还是二元,我感觉是积分或者微分时是的输入矩阵变形导致后续矩阵不一致而出错。目前还是试验阶段,所以数据是网上找的,需要你拟合的参数因为函数复杂且比较多,有最多是十一个,所以不知道具体范围。
这是我的主函数:

clc;
clear;
X(:,1) = xlsread('test_data.xls','Sheet1','I99:I2449');
f = xlsread('test_data.xls','Sheet1','H99:H2449');
[NUM,TXT] = xlsread('test_data.xls','Sheet1','B99:B2449');
X(:,2) = cellfun(@str2num,TXT);
x0 = ones(11,1).*rand(11,1); 
%model =Mooney_Rivilin_5(X(:,1),X(:,2));
[beta,R,J] = lsqcurvefit(@Mooney_Rivilin_5,x0,X,f);
这是我的自定义函数:
%Mooney-Rivlin_5 Calculator 
function sigma=Mooney_Rivilin_5(x,t) %C is Initial shear modulus 单位Pa
%Paramters defined as variables, stretch(strain) defined as variable x 
syms x t c10 c01 c20 c11 c02 s1 s2 s3 t1 t2 t3 s
% First and Second Invariants Defined 
% x is strain
y=((x.^2)+(2/x)); 
z=((2*x)+(x.^-2));
f1=c10*(y-3)+c01*(z-3)+c11*((y-3).*(z-3))+c20*((y-3).^2)+c02*((z-3).^2); 
f2=1+s1*exp((s-t)/t1)+s2*exp((s-t)/t2)+s3*exp((s-t)/t3);
f3=2*diff(f1).*f2;
%% Derivative Taken 
sigma=2*diff(f1)+int(f3,s,0,t); % about x and t function
end

所用到的数据:https://www.aliyundrive.com/s/US47zhw9g9T%E3%80%82%E9%98%BF%E9%87%8C%E4%BA%91%E7%9B%98%E6%89%93%E5%BC%80%E3%80%82
如果有熟悉的码友,辛苦花几分钟帮帮忙!!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月14日
    • 赞助了问题酬金15元 10月6日
    • 创建了问题 10月4日

    悬赏问题

    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂
    • ¥15 wordpress 产品图片 GIF 没法显示
    • ¥15 求三国群英传pl国战时间的修改方法
    • ¥15 matlab代码代写,需写出详细代码,代价私
    • ¥15 ROS系统搭建请教(跨境电商用途)
    • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。