我需要计算R*S*R'
。
R
是一个普通的矩阵。
但S
由值组成。 S
的元素是F(w)
的值,由
[PressureSpecAuto,F] = periodogram(....);
S{i,j} = PressureSpecAuto;
表示每个元素都是一组数据。
问题在于,Matlab不能将单元矩阵与矩阵相乘,那么如何解决这个问题呢?
注意:S
的元素不应被视为向量。它只是函数F(w)的值集。
UPDATE1:
S中的元素(函数的值集)
基本上,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
答案 0 :(得分:1)
你能用循环吗?也许这会起作用......
只需使用循环并循环遍历S
的索引即可提取每个矩阵。然后进行乘法运算。
本质上:
for n=1:numel(S)
R*S{n}*R'
end
或使用cellfun @(x)
是匿名函数。
cellfun(@(x) R*x*R', S, 'UniformOutput',false)