【发布时间】:2017-03-23 18:05:53
【问题描述】:
我有一个尺寸为 8x6 的矩阵。这个矩阵中有一半的元素是 0,这完全没问题。现在,我想参考另一个 160x6 的矩阵。 8x6 矩阵基于 160x6 矩阵,并来自滚动窗口(20 个观察值)。
我想创建一个新矩阵(同样是 160x6)。每当我的 8x6 矩阵中的一个元素等于 0 时,我希望原始 160x6 矩阵中引用该元素(为 0)的 20 个观察值也为 0。
我尝试了以下方法:
for t=1:T
for i=1:N
if B(:,i) == 0;
C(t,i) = 0;
else
C(t,i) = A(t,i);
end
end
end
我在哪里:
A 是 160x6 矩阵
B 是 8x6 矩阵
C 是 160x6 矩阵的新输出
目前,我获得了一个“新”的 160x6 矩阵 (C),但它完全复制了原始的 160x6 矩阵 (A)。所以循环或者if语句是不正确的。
【问题讨论】:
-
在这个例子中我假设
T = 160和N = 6? -
是的。很抱歉漏掉了这个。
-
您还错过了
A和B矩阵。举个输入数据的例子会更容易。 -
B(:,i) == 0永远不会成立,因为您将矩阵的整个列与零进行比较,除非您的矩阵中只有一行,因此B(:,i)是一个标量。这就是为什么你的 C 和 A 一样
标签: matlab loops if-statement matrix replace