我有一个单元格数组:A(1x2)。
我想把它的决定因素除以一个数字。
W={[4,-2;-2,0.2],[4,-2;-2,0.2]}
我可以采取W的决定因素吗?我怎样才能将它除以数字?
如果我使用cell2mat()
,它会将其转换为矩阵,但它不会是a
对称矩阵。
完整的代码是:
W={[4,-2;-2,0.2],[4,-2;-2,0.2]};
N=size(W,1);
S = cell(1,numel(W)); %% initialize S first
nu = 9; % don't assign constants inside the loop
Arg=[nu-N+1:nu]; % don't assign constants inside the loop
for i = 1: numel(W)
S{i}=W{i}/nu; %% no parens here
K=2^(nu*N/2)*pi^(N*(N-1)/4)*prod(gamma(Arg/2));
Wd = 1/K * (det(S{i})^(-nu/2) * (det(W{i})^((nu-N-1)/2) * exp(-1/2* trace(inv(S{i})*W{i})); %% removed lots of parens, added some curly braces
端
答案 0 :(得分:-1)
首先,你的任务不是非常有效的MATLAB,所以我们将其改为:
W={[4,-2;-2,0.2],[4,-2;-2,0.2]};
在MATLAB中创建一个有效的单元数组。它有两个元素,每个元素都是一个2x2矩阵。要获取要素的元素,您必须取消引用它们,如下所示:
det1 = det(W{1})
det2 = det(W{2})
请注意花括号。如果你使用常规的MATLAB索引,就像这样:
det1 = det(A(1)) %% DOESN'T WORK
你会收到错误,因为det()不会对单元格数组起作用。需要取消引用花括号来移除外层(单元格数组)并获取内层(矩阵)。
要除以数字,您只需进行正常的除法:
det1 = det1 / my_number;
当然,您可以在一个声明中完成所有操作:
det1 = det(A{1}) / my_number;
编辑:将一个矩阵除以一个数,只需除以!
new_W = W{1}/num
EDIT2:你的代码消失了,但是我从你的编辑历史中检索到了,我认为主要的问题就是让你的解释正确。这是一个更正版本:
W={[4,-2;-2,0.2],[4,-2;-2,0.2]};
N=size(W,1);
S = cell(1, numel(W)); %% initialize S first
nu = 9; % don't assign constants inside the loop
Arg=[nu-N+1:nu]; % don't assign constants inside the loop
for i = 1: numel(W)
S{i}=W{i}/nu; %% no parens here
K=2^(nu*N/2)*pi^(N*(N-1)/4)*prod(gamma(Arg/2));
Wd = 1/K * (det(S{i})^(-nu/2) * (det(W{i})^((nu-N-1)/2) * exp( -1/2*trace(inv(S{i}*W{i})); %% removed lots of parens, added some curly braces
end