【发布时间】:2017-12-12 07:49:33
【问题描述】:
我将the same code 用于两个不同的输入矩阵, 在这两种情况下,我都将其称为“输入矩阵 A”
第一种情况是7000X4
第二种情况是29500X12
我需要在 windows 中拆分选定的列
然后对于每个窗口
我需要计算标准并将值存储在std_vals 矩阵中
我小心地更改了输入变量的值。
在第一种情况下,我的目标是分析第 4 列, 在第二种情况下,我的目标是分析第 12 列
在第一种情况下,代码有效
在第二种情况下,代码返回了一条错误消息
我试图分析代码中的所有步骤,但没有发现错误。
您能帮我更好地理解吗?
column_length=size(A,1);
Amod= mod(column_length,100);
if Amod~=0
A=A(1:(size(A,1)-Amod),:);
end
newlenght=size(A);
%selected column vector to analyze
columnselected=4;
%window dimension
window_size=200;
%overlap between two windows
overlap=0;
%increment needed
step=window_size - overlap;
%std threshold
soglia=2;
std_vals= NaN(size(A,1),1);
devstd=std(A(:,4));
stdInds=bsxfun(@plus,1:step:(size(A,1)-overlap),(0:(window_size-1)).');
%In the first case size(stdInds)=200X35
%In the second case size(stdInds)=200X148
%In the first case size(repmat(columnselected,size(stdInds))= 200X35
%In the second case size(repmat(columnselected,size(stdInds))= 200X148
%In the first case size(A)=7000X4
%In the second case size(A)=29500X12
std_vals=std(A(sub2ind(size(A),stdInds,repmat(columnselected,size(stdInds)))));
highStdWindows=find(std_vals>soglia);
我是自学的。为了更好地理解我的错误,我首先在一张纸上重写了代码,然后我分析了每一步,并研究了输出。我花了4个多小时。
我也尝试在第二种情况下放入一个 7000X12 向量,但代码返回了同样的错误。
【问题讨论】:
-
我没有解决您遇到错误的原因,但我确实在下面为窗口之间零重叠的琐碎情况提供了另一种解决方案。
-
@b3。数据集中有一些奇怪的错误或异常,我会深入,因为我尝试使用 102047X12 并且它可以正常工作
标签: matlab sliding-window matrix-indexing bsxfun