3次元のPDE系でp​deCoeffici​entsToDoub​le関数を使うと、2​次元と認識されてしま​う

3次元のPDE系についてpdeCoefficientsToDouble関数を使用したのですが、次元が2次元と認識され、その後のc Coefficientを変形する部分でエラーが出ます(下記のエラーメッセージが表示されます)。
使い方によるエラー mat2cell
入力引数D1からD2は、合計するとそれぞれの入力行列のサイズの次元[9 9]にならなければなりません。
エラー:pdeCoefficientsToDouble(行73)
blocks=mat2cell(S.c, repmat(dimen, 1, nequations), repmat(dimen, 1, nvars));
pdeCoefficientsToDouble関数のスクリプトを見ると、
% get dimen (2 or 3)
allSyms = struct2cell(S); %質問者注:SはpdeCoefficients関数で作成された構造体
dimen = 2;
for k = 1:numel(allSyms)
if has(allSyms{k}, sym('z'))
dimen = 3;
end
end
という方法で次元を判定しており、pdeCoefficientsのいずれかにシンボリック変数'z'が含まれないと次元が2から変更されないことになりますが、3次元PDEのpdeCoefficientsに'z'が含まれるとは限らないのではないでしょうか。

Answers (0)

Products

Release

R2022a

Asked:

on 24 Jun 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!