How to change specific numbers to 0
7 次查看(过去 30 天)
显示 更早的评论
So here is my current code:
A = [ 1 2 3 4 5 6 7 8 9];
B = [ 1 2 3 4];
A(~B)=0;
disp(A);
Basically I want A to be equal to [ 1 2 3 4 0 0 0 0 0 ]. But for some reason it won't take ~B, where as it will work when it is just B. Anyone know a solution to this or why this is the case? Thanks in advance!
2 个评论
Stephen23
2023-6-17
"But for some reason it won't take ~B, where as it will work when it is just B. "
Compare:
B = [1,2,3,4]
~B
The first is a numeric array, the second is a logical array. Now revise what kind of indexing MATLAB supports:
采纳的回答
Daniel
2023-6-17
There are two ways you can select elements of an array in MATLAB.
- Pass in an array of valid indices. "Valid" means that they're within the range of indices to the array.
- Pass in an array of logical values, of the same size as the array.
a = (1:10)*2; % Demo array. This has 10 elements, indexed 1 through 10, values 2, 4, 6, ... 20.
% First method
a(1)
a(10)
a(end) % Special case: "end" refers to the last element in the array
a([5 7 2])
% Second method
mod(a,4) == 0 % Notice that this returns a "logical" data type at the output, as will any comparison
a(mod(a,4)==0)
~ is a logical operator, so ~B is an array of logicals. Since it's a logical array, it has to have the same size as A, which it doesn't. Therefore the line of code fails.
One alternative method would be to write:
A(5:end) = 0;
That will select and modify elements 5 through 9 (the last element) of A.
0 个评论
更多回答(1 个)
John D'Errico
2023-6-16
编辑:John D'Errico
2023-6-16
For some reason? Learn to use ismember instead. What you think makes sense does not work in MATLAB. And that means you need to start back with the tutorials, to learn MATLAB syntax. Sorry. Time to start at the beginning.
2 个评论
Daniel
2023-6-17
Regarding starting at the beginning, speaking as a MathWorker, you probably have access to some MATLAB fundamentals courses if you go to matlab.mathworks.com through your university account and click on "Online Training". You may find the MATLAB Onramp and/or MATLAB Fundamentals to be helpful.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!