Hi. I have a matrix A1 and a vector B1.
If I have a 0 in any row of vector B1, I need to insert 0s in that same row of matrix A (see picture).
With this code the 0s are applied only to the first row of A. How come?
A1 = importdata("A1.mat");
B1 = importdata("B1.mat");
rows_B1 = height(B1);
for C = 1:height(rows_B1)
if B1(C) == 0
t1 = 0;
t2 = 0;
A1(C,1) = t1;
A1(C,2) = t2;
end
end

 채택된 답변

Dyuman Joshi
Dyuman Joshi 2023년 7월 18일
편집: Dyuman Joshi 2023년 7월 18일

0 개 추천

"With this code the 0s are applied only to the first row of A. How come?"
In your code, you have already defined rows_B1 to be the height of B1. That will return a scalar value.
rows_B1 = height(B1);
When you use height on rows_B1, it will just return 1 (because it is a scalar), and your loop will go from 1 to 1 i.e. only the 1st row.
for C = 1:height(rows_B1)
Correct your code as follows -
%Corrected
for C = 1:rows_B1
A better approach would be indexing -
%Sample data
A1 = [309 126; 310 126; 289 309; 209 309;291 309];
B1 = uint8([0 0 68 70 72])';
%Comparing values of B1 to 0
idx = B1==0
idx = 5×1 logical array
1 1 0 0 0
%Assigning all columns of corresponding rows to be 0
A1(idx,:) = 0
A1 = 5×2
0 0 0 0 289 309 209 309 291 309

댓글 수: 2

Thanks! Could I also ask you how to modify the created A1 matrix so that the rows containing 0s are removed? For example, using: A1_n = A1(A1~=0) and the result is:
A1 = [289 309; 209 309;291 309];
%Sample data
A1 = [309 126; 310 126; 289 309; 209 309;291 309];
B1 = uint8([0 0 68 70 72])';
%Comparing values of B1 to 0
idx = B1==0
idx = 5×1 logical array
1 1 0 0 0
%Assigning all columns of corresponding rows to be 0
A1(idx,:) = 0
A1 = 5×2
0 0 0 0 289 309 209 309 291 309
%Removing the rows where rows in A are zeros is same as
%getting the rows where B1 is not equal to zero
A1_n = A1(~idx,:)
A1_n = 3×2
289 309 209 309 291 309

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

2023년 7월 18일

댓글:

2023년 7월 18일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by