如何用数字划分单元格数组元素

时间:2016-02-13 17:53:15

标签: matlab

我有一个单元格数组: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

1 个答案:

答案 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