Undefined function 'diag' for input arguments of type 'cell'.
1 次查看(过去 30 天)
显示 更早的评论
I am trying to run a code given by Felipe Uribe Castillo
%%% function to generate c_ijk with dimension M and order p
%% using symbolic toolbox
function c = c_ijk_sym(M,p)
M=3
p=1
%% Define the number of RVs in sym
x = cell(1,M);
for j = 1:M
x{j} = sym(sprintf('xi_%d',j));
end
%% Generate Hermite pols using the ’Hermite_PC’ function
%% defined in Section 3.4 of this document
[~,Psi,PsiSqNorm,P] = Hermite_PC(M,p)
%% Procedure
dw = @(x) exp(-0.5*x^2)/sqrt(2*pi); %% Gaussian measure
c = cell(M,1)
c{1} = diag(PsiSqNorm); %% c_{0jk}
tic;
for i = 1:M
c{i+1} = sparse(P,P);
for j = 1:P
for k = 1:P
msg = fprintf('C_{%d,%d,%d}',i,j,k);
cijk = x{i}*Psi{j}*Psi{k};
for l = 1:M
cijk = int(cijk*dw(x{l}),x{l},-inf,inf);
if cijk == 0
break;
end
end
c{i+1}(j,k) = double(cijk);
fprintf(repmat('\b',1,msg));
end
end
end
toc;
return;
I am getting the following error:
Undefined function 'diag' for input arguments of type 'cell'.
Error in c_ijk_sym (line 20)
c{1} = diag(PsiSqNorm); %% c_{0jk}
please help.
1 个评论
Torsten
2022-5-11
The error message is pretty clear, isn't it ?
"diag" cannot be applied to a variable of type "cell", and "PsiSqNorm" seems to be of this type.
采纳的回答
Walter Roberson
2022-5-11
https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/53276/versions/1/previews/ssfem_eb_beam/Hermite_PC.m/index.html
The output PsiSqNorm is the fifth output of that function, but your named output with that name is the fourth output of the call.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!