【问题标题】:Sum matrix error octave求和矩阵误差倍频程
【发布时间】:2018-01-10 21:11:05
【问题描述】:

我从一个形状矩阵开始:N·2·M,我称之为x。然后,我有另一个形状为 M 的称为 theta 的矩阵。以下代码在八度音阶中给出以下错误:不一致的参数(op1 是 2x2x2,op2 是 2x2x2)。

  x(n+1,:,:) = x(n+1,:,:) + [cos(theta(:)) sin(theta(:))]

这有什么问题?

PS。完整代码如下:

M=30;
N=32;

for n=1:1:N
    z = [1.0 0.0]
    x(1,1,1:M) = z(1);
    x(1,2,1:M) = z(2);

    x(n+1,:,:) = x(n,:,:) + randn([1,2,M])
    theta(:) = randn([M,1]);
    x(n+1,:,:) = x(n+1,:,:) + [cos(theta(:)) sin(theta(:))]
end

【问题讨论】:

    标签: matlab matrix sum octave


    【解决方案1】:

    size([cos(theta(:)) sin(theta(:))]) 是 30x2 而size(x(n+1,:,:)) 是 1x2x30

    它们不匹配。

    我不知道这在数学上是否是您需要的(即,如果加在一起的索引是应该的),但您可以通过以下方式解决此问题:

     x(n+1,:,:) = x(n+1,:,:) + reshape([cos(theta(:)) sin(theta(:))].',1,2,M);
    

    【讨论】:

    • 我明白了...我使用的是 M=2,矩阵是 2x2 和 2x2。这不奇怪吗?
    • @Learningfrommasters 第二个是1x2x2,准确的说
    • 这样上传子矩阵不正确吗?实际上,如果我这样做 A = x(n+1,:,:); B=[cos(theta(:)) sin(theta(:))]; A+B 工作,但 x(n+1,:,:)=A+B 没有
    • @Learningfrommasters 不,它们的大小必须相同
    • 修复它的简单方法是将 x 更改为 2xMxN。那么x(:,:,n+1) 将是正确的形状。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2016-04-08
    • 2019-04-15
    • 2018-08-10
    相关资源
    最近更新 更多