如何存储一个双循环结果成一个矩阵列逐列?

1次检视(最近30天)
我有一个矩阵循环;我所做的就是找出满足条件的特定点并将它们存储到数组上下;
当cycle1是一列时,它可以工作;但是当cycle1增加到2列时,双循环就不起作用了。
上下的大小是不确定的;我估计它们的尺寸是100*12;
现在代码没有错误,但是给出错误的结果。
请给我一些关于这个代码的建议。
Cycle1 = [butterworth_filter1,butterworth_filter2];
[m,n] = size(cycle1)
Up = 0 (100,12);
Down = 0 (100,12);
k = 1;
J = 1:n
I = 1:m
如果I == m
打破
elseifCycle1 (i,j) < 1.5e-5 && Cycle1 (i+1,j) > 1.5e-5
Up (k,:) = I + 1;
K = K +1;
elseifCycle1 (i,j) > 1.5e-5 && Cycle1 (i+1,j) < 1.5e-5
Down (k,:) = i;
K = K +1;
结束
结束
结束
6个评论
Stephen23
Stephen23 2021年9月29日
雷丽错误发布的“答案”移到了这里:
从测试代码来看,up有结果;现在每一列都是一样的;我需要检查随机矩阵;
下一件事是列中不应该有0;这就是我用k的原因;
以前处理一维数组时,我使用
Up (end+1) = I +1;存储位置;但现在我需要处理一个矩阵;我被困在这里了。

登录评论。

答案(1)

1月
1月 2021年9月29日
你用了一个计数器k 向上 下来 列表。
Cycle1 = [butterworth_filter1,butterworth_filter2];
[m, n] = size(cycle1)
Up = 0 (100,12);
Down = 0 (100,12);
Kup = 1;
Kdown = 1;
J = 1:n
I = 1:m - 1%比:if i==m, break简单
如果Cycle1 (i,j) < 1.5e-5 && Cycle1 (i+1,j) > 1.5e-5
Up (kup,:) = 1 + 1;%您确定要将完整行设置为i+1吗?
Kup = Kup + 1
elseifCycle1 (i,j) > 1.5e-5 && Cycle1 (i+1,j) < 1.5e-5
Down (kdown,:) = i;
Kdown = Kdown + 1;
结束
结束
结束
1评论
雷雳
雷雳 2021年9月29日
关闭所有;
清晰;
clc;
Cycle1 = abs(randn(100,12));
对于I = 1:12
情节(cycle1(我):,)
抓住
结束
[m,n] = size(cycle1)
Up = 0 (100,12);
Down = 0 (100,12);
kup = 1;
kdown = 1;
对于j = 1:n
对于I = 1:m-1
%如果I == m-1
%打破
如果cycle1(i,j) < 0.2 && cycle1(i+1,j) > 0.2
Up (kup,:) = 1 + 1;%up现在只有一个值了??
Kup = Kup +1
Elseif cycle1(i,j) > 0.2 && cycle1(i+1,j) < 0.2
Down (kdown,:) = i;
Kdown = Kdown +1;%down现在只有一个值了??
结束
结束
结束
图(4)
情节(cycle1)
抓住
plot(kup, cycle1(kup), 'go', 'MarkerSize', 8, 'MarkerFaceColor', 'g')
plot(kdown, cycle1(kdown), ' 0 ', 'MarkerSize', 8, 'MarkerFaceColor', 'r')
xlabel('Time(s)');ylabel('EMG(V)');title('Muscle Activation & Cycles')
图例(“科目1”)

登录评论。

类别

了解更多有关字符和字符串帮助中心文件交换

社区寻宝

在MATLAB Central中寻找宝藏,并了解社区如何帮助您!

开始狩猎!