为什么我的Matlab代码不能正常工作?
我的代码 它应该做什么:为什么我的Matlab代码不能正常工作?,matlab,debugging,Matlab,Debugging,我的代码 它应该做什么: b(abs(b(1:3:length(b))) > 0.75) = 0.75 这两个怎么不一样呢?索引部分b(1:3:end)返回一个由0和1组成的短向量,因此只会更改b的i(对于b的前三个ish中的i)如果第3*i+1条目的绝对值大于0.75 例如: b1 = b(1:3:end); b1(abs(b1)>0.75) = 0.75; b(1:3:end) = b1; 会回来吗 b = [-0.684; 0.941; 0.
b(abs(b(1:3:length(b))) > 0.75) = 0.75
这两个怎么不一样呢?索引部分b(1:3:end)
返回一个由0和1组成的短向量,因此只会更改b
的i
(对于b
的前三个ish中的i
)如果第3*i+1
条目的绝对值大于0.75
例如:
b1 = b(1:3:end);
b1(abs(b1)>0.75) = 0.75;
b(1:3:end) = b1;
会回来吗
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(b_指数)=0.75
将b
的第四个条目更改为0.75
作为一个班轮的一种方法是
b_index =
0
0
0
1
b(1:3:end)=b(1:3:end)。*(abs(b(1:3:end))0.75);
但是我认为三行代码更清晰一些。三行exmaple的第一行代码没有任何功能。是的,它有功能。我要向量中的每三个位置。不,不是。它不意味着什么,也不把结果保存在任何地方。很可能你的意思是b1=b(1:3:end)哦,对不起,我忘了代码的一部分。
b(1:3:end) = b(1:3:end).*(abs(b(1:3:end))<=0.75)) + 0.75*((b(1:3:end)>0.75));