Matlab:如何用单元矩阵进行矩阵计算?

时间:2014-11-12 10:04:49

标签: matlab cell-array

我需要计算R*S*R'R是一个普通的矩阵。 但S由值组成。 S的元素是F(w)的值,由

计算
[PressureSpecAuto,F] = periodogram(....);
S{i,j} = PressureSpecAuto;

表示每个元素都是一组数据。

问题在于,Matlab不能将单元矩阵与矩阵相乘,那么如何解决这个问题呢?

注意:S的元素不应被视为向量。它只是函数F(w)的值集。

UPDATE1:

enter image description here

enter image description here

S中的元素(函数的值集)

enter image description here

基本上,S中的元素是函数的值,例如f(x)。乘以时,它仍然是R(1,:)* S(:,1)。即,R(1,1)* S(1,1)+ R(1,2)* S(2,1)......

UPDATE2:

R:
1   0   0   0   0   0
0   0   0   0   0   0
1   0   0   0   0   0
0   0   0   0   0   0
1   0   0   0   0   0
0   0   0   0   0   0
1   0   0   0   0   0
0   0   0   0   0   0
0   1   0   0   0   0
0   0   0   0   0   0
0   1   0   0   0   0
0   0   0   0   0   0
0   1   0   0   0   0
0   0   0   0   0   0
0   1   0   0   0   0
0   0   0   0   0   0
0   0   0   0   0   0
0   0   0   1   0   0
0   0   0   0   0   0
0   0   1   0   0   0
0   0   0   0   0   0
0   0   0   1   0   0
0   0   0   0   0   0
0   0   0   0   1   0
0   0   0   0   0   0
0   0   0   0   0   1

S中的元素(例如S(1,1)):

2.11586339015690e-23
6548.06822760155
10933.4416318101
67974.4878764171
1640.90694018577
22254.1105594943
54583.8668300499
25426.8190829386
4646.70203854458
19224.2485418923
17292.0278726986
928.765041030392
14728.5614115324
113385.034815149
30274.0332077125
22697.8886043178
61916.4030808219
38648.2740539840
127.547928632502
24452.0499691112
12311.1687443994
6627.23433956309
11264.7956369618
7232.97125504007
4120.08127891675
1546.69594235781
22795.2322822644
627.572461904325
9237.43533412019
3433.67898348596

1 个答案:

答案 0 :(得分:1)

你能用循环吗?也许这会起作用......

只需使用循环并循环遍历S的索引即可提取每个矩阵。然后进行乘法运算。

本质上:

for n=1:numel(S) 
    R*S{n}*R' 
end

或使用cellfun @(x)是匿名函数。

cellfun(@(x) R*x*R', S, 'UniformOutput',false)