Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 我想从数组中提取值,并在字符串表达式中使用它们_Arrays_Matlab_For Loop - Fatal编程技术网

Arrays 我想从数组中提取值,并在字符串表达式中使用它们

Arrays 我想从数组中提取值,并在字符串表达式中使用它们,arrays,matlab,for-loop,Arrays,Matlab,For Loop,我试图做一个非线性拟合的for循环,其中一个系数随着每次迭代而改变值。这些值位于一个名为YoungMod的数组中。我有: for k=1:size(DataAll,3) ft = fittype('E1*(YoungMod(k))-b*t','coefficients',{'E1','b'},'independent', 't','dependent','depth','options',fo); [FittedData{k},gof{k}] = fit(DataAll(:,3,

我试图做一个非线性拟合的for循环,其中一个系数随着每次迭代而改变值。这些值位于一个名为YoungMod的数组中。我有:

for k=1:size(DataAll,3)
    ft = fittype('E1*(YoungMod(k))-b*t','coefficients',{'E1','b'},'independent', 't','dependent','depth','options',fo);
    [FittedData{k},gof{k}] = fit(DataAll(:,3,k),DataAll(:,1,k),ft1); %{k});
    coeffs{k}=coeffvalues(FittedData{k});
end
我收到的错误消息是:

    Error using fittype>iTestCustomModelEvaluation (line 726)
    Expression
    E1*(YoungMod(k))-b*t
    is not a valid MATLAB expression, has non-scalar coefficients, or cannot be evaluated:
    Error in fittype expression ==>
   (E1*YoungMod(k))-b*t
    ??? Undefined function 'YoungMod' for input arguments of type 'double'.

在我看来,问题在于字符串读取的是YoungMod*(k),而不是YoungMod数组的k值。非常感谢您的帮助

请尝试此操作,以确保k作为变量而不是字符串计算:

ft = fittype(['E1*(YoungMod(' num2str(k) '))-b*t'],'coefficients',{'E1','b'},'independent', 't','dependent','depth','options',fo);

我使用一个虚拟变量和fittype的“problem”选项解决了这个问题:

for k=1:size(DataAll,3)
    ym = YoungMod(k)
    ft = fittype('E1*(ym)-b*t','coefficients',{'E1','b'},'independent', 't','dependent','depth','options',fo,'problem','ym');
    [FittedData{k},gof{k}] = fit(DataAll(:,3,k),DataAll(:,1,k),ft,'problem',ym);
    coeffs{k}=coeffvalues(FittedData{k});
end

谢谢你的意见,但这还不行。