【问题标题】:Matlab :Error in Matrix dimensionsMatlab:矩阵尺寸错误
【发布时间】:2014-04-17 03:16:25
【问题描述】:

我有兴趣对修改后的形状分析进行建模,为此我编写了一个插入实验值的函数以及近似拟合插值数据的曲线

当我计算插值时,我得到矩阵不匹配错误,请检查它并告诉我我的错误

function [c_i,c_f,c_e] = M_shape_analysis(t,S,a1,a2,td,tmax,alpha,Be,p,q,r,k_el,k1,k2,k3)
%Modified Shape_analysis and estimating K3 
%  Interpolation of measured Data points



c_i = zeros(size(t));

ind = (t > td) & (t < tmax);
c_i(ind) = S *(1 - exp(-alpha*t(ind)));
%c_t(ind)= (A_max*K_1*(t(ind)/(k2+k3)-(td*(k2+k3)/(k2+k3).^2)-(td/(k2+k3) -(td*(k2+k3)/(k2+k3).^2))*exp(-(k2+k3)*(t(ind)-td)))+(0.5*K_2*(t(ind)-td).^2));


ind = (t >= tmax);

a3 =(S *(1 - exp(-alpha*t(ind))) -(a1+a2));
c_i(ind) = a1*exp(-p * (t(ind) - tmax))+ a2*exp(-q * (t(ind) - tmax)) + a3*exp(-r * (t(ind) - tmax));
%c_t(ind) =((K_1*(A/(k2+k3-B))*(exp(B*(t(ind)-tmax))- exp(-(k2+k3)*(t(ind)-tmax)))+(K_2*(A/B)*(1+exp(B*(t(ind)-tmax))))));


%ft = fittype('Input_function(t, a1, a2, a3, b1, b2, b3, td, tmax)', 'independent', 't');

%fo = fit(t, c, ft,'StartPoint', [20000, 20000, 20000, 0.01, 0.01, 0.01, 10, 30],'Lower', [0, 0, 0, 0, 0, 0, 0, 0]);


%plot(t,c_t);
hold all;
subplot(2, 2, 2);
plot(t, c_i,'x');
axis([0 50 -2000 80000]);
xlabel time ;
ylabel concentration ;



%--------------------------------------------------------------------------------------------------------------------------
   % Fitting the measured Data

ind = (t > td) & (t < tmax);

c_f(ind)= conv(((t(ind) - td) ./ (tmax - td) * (a1 + a2 + a3)),(k1*exp(-(k2+k3)*t(ind)+((k1*k3)/(k2+k3-k_el)))),'same');


ind = (t >= tmax);

c_f(ind) = conv((a1 * exp(-b1 * (t(ind) - tmax))+ a2 * exp(-b2 * (t(ind) - tmax))) + a3 * exp(-b3 * (t(ind) - tmax)),(k1*exp(-(k2+k3)*t(ind)+((k1*k3)/(k2+k3-k_el)))),'same');


hold all;
subplot(2, 2,4);
plot(t, c_f);
axis([0 50 -2000 80000]);
xlabel time ;
ylabel concentration ;

%plot(ts, Input_function(ts, fo.a1, fo.a2, fo.a3, fo.b1, fo.b2, fo.b3, fo.td, fo.tmax));

%--------------------------------------------------------------------------------------------------------------------------
   % Plotting K3 Estimate : Fitted curve

  DV_free= k1/(k2+k3);

  ind = (t >= tmax);
   c_e(ind) = DV_free* exp(-Be*t(ind));

subplot(2, 2, 6);
plot(t, c_e); 

axis([0 50 -2000 80000]);
xlabel time ;
ylabel concentration ;



end

以下是我得到的错误

Error using  * 
Inner matrix dimensions must agree.

Error in M_shape_analysis (line 17)
c_i(ind) = a1*exp(-p * (t(ind) - tmax))+ a2*exp(-q * (t(ind) - tmax)) + a3*exp(-r *
(t(ind) - tmax));

请让我知道我在建模中出错的地方

【问题讨论】:

  • 上一行中a3的定义在length(ind)>1时会产生一个数组。所以a3 * exp(...) 会给你一个错误。请改用.*
  • @R.Schifini 非常感谢,效果很好

标签: matlab modeling curve-fitting estimation


【解决方案1】:

我无法指出确切的错误在哪里,因为我不知道您输入参数的维度。该错误是由于您在以下任一情况下使用* 运算符:

  1. 当相乘的两个矩阵的维数不一致时,您希望执行矩阵乘法。例如,一个必须是mxn,另一个必须是nxk 矩阵。我假设你知道这一点。

  2. 您希望执行逐元素乘法而不是矩阵乘法。如果是这种情况,那么您必须使用 .* 运算符。如果要将标量与向量(或矩阵)相乘,可以使用任一运算符。

我相信没有。 2是错误的原因。

阅读timesmtimes,即(.**)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2015-01-20
    相关资源
    最近更新 更多