为什么我的Matlab代码无法正常工作?

时间:2015-10-27 15:26:03

标签: matlab debugging

我的代码

    b(abs(b(1:3:length(b))) > 0.75) = 0.75

它应该做什么:

    b1 = b(1:3:end);
    b1(abs(b1)>0.75) = 0.75;
    b(1:3:end) = b1;

这两个怎么不一样?

1 个答案:

答案 0 :(得分:0)

索引部分b(1:3:end)会返回零和1的短向量,因此只会更改i的{​​{1}}个条目(第一个为b如果i条目的绝对值大于b,则0.75)为3*i + 1

例如:

0.75

将返回

b = [-0.684; 0.941; 0.914; -0.029; 0.6; -0.716; -0.156; 0.831; 0.584; 0.919];
b_index = abs(b(1:3:length(b)))>0.75

b_index = 0 0 0 1 会将b(b_index) = 0.75的第4个条目更改为b

将此作为单线程的一种方法是

0.75

但我认为三线更清晰。