# A basic question of matrix indexing can't get a proper output

352 ビュー (過去 30 日間)
Debaditya Chakraborty 2019 年 5 月 20 日
コメント済み: Adam Danz 2021 年 7 月 1 日 7:08
Given matrix A, assign the second column of A to a variable v. Afterwards change each element of the last row of A to 0.
my code:
A = [1:5; 6:10; 11:15; 16:20];
v= A(1:4,2);
A(5, :) = zeros(1, 5);
##### 17 件のコメント表示非表示 16 件の古いコメント
Adam Danz 2021 年 1 月 8 日
1. "1:end" can and should be replaced by A(:,2) as my answer demonstrates.
2. avoid hard-coding indices in "A(4,1:end)". Instead, use A(end,:)=0 as my answer demonstrates.

サインインしてコメントする。

### 回答 (8 件)

amjad khan 2020 年 4 月 3 日
A = [1:5; 6:10; 11:15; 16:20];
v=A(:,2)
A(4,:)=0
##### 2 件のコメント表示非表示 1 件の古いコメント
Adam Danz 2020 年 4 月 3 日
This is essentially the same answer as mine except that you're replacing the 4th row with 0s whether or not the 4th row is the last row. This is why I suggest using A(end,:) = 0 so that it will work for all sizes of A.

サインインしてコメントする。

Adam Danz 2019 年 5 月 20 日

Here are some improvements to your code so that it works no matter what size A is.
A = [1:5; 6:10; 11:15; 16:20];
v= A(:,2);
A(end+1, :) = zeros(1, size(A,2));
Note that your instructions are to "change" the last row of A. That's not what your code is doing. You're adding a row of zeros. If you want to change the last row instead of adding another row,
A(end, :) = zeros(1, size(A,2));
Summary
Add a row of 0s to the end of matrix A
A(end+1,:) = 0;
Replace the last row of matrix A with 0s.
A(end,:) = 0;
##### 0 件のコメント表示非表示 -1 件の古いコメント

サインインしてコメントする。

John Cyruz Las Piñas 2020 年 3 月 10 日
A = [1:5; 6:10; 11:15; 16:20];
v= A(:,2);
A(end+1, :) = zeros(1, size(A,2));
##### 4 件のコメント表示非表示 3 件の古いコメント
Ayush Khandelwal 2020 年 5 月 12 日
OK done

サインインしてコメントする。

Badal Bhardwaj 2020 年 5 月 12 日
Answer is A(4,1)=0 A(4,2)=0 A(4,3)=0 A(4,4)=0 A(4,5)=0
##### 7 件のコメント表示非表示 6 件の古いコメント
Walter Roberson 2020 年 5 月 12 日
See the image 4th row is zero
The question does not ask to make the 4th row zero: the question asks to make the last row zero.
Do not use parenthesis at end of matrix
? Where did Adam use parenthesis at the end of matrix?

サインインしてコメントする。

Ashim Bhat 2020 年 5 月 20 日
for assigning v
v = A(:,2);
for geeting zero values of last row of A
A(4,:) = 0
##### 2 件のコメント表示非表示 1 件の古いコメント
Adam Danz 2020 年 5 月 20 日
Example 1 of this method failing:
A = [1 2 3;
1 2 3;
1 2 3;
1 2 3;
1 2 3;
1 2 3];
A(4,:) = 0;
% Result
A =
1 2 3
1 2 3
1 2 3
0 0 0 % <--- wrong row
1 2 3
1 2 3
Example 2 of this method failing
A = [1 2 3;
1 2 3];
A(4,:) = 0;
% Result
A =
1 2 3
1 2 3
0 0 0
0 0 0 % <--- Now matrix A has 4 rows

サインインしてコメントする。

MICHAEL 2020 年 6 月 12 日
v=A(:,2);
A(end, :) = zeros(; size(A,2));
##### 1 件のコメント表示非表示 なし
Walter Roberson 2020 年 6 月 12 日
that is not valid syntax for using zeros : the semicolon is not correct

サインインしてコメントする。

Imane Tahar 2020 年 11 月 14 日
A = [1:5; 6:10; 11:15; 16:20];
v= A(:,2)
A(end,:)= 0
##### 0 件のコメント表示非表示 -1 件の古いコメント

サインインしてコメントする。

Minal Kulkarni 2021 年 6 月 30 日 15:46
A=[1:5; 6:10; 11:15; 16:20];
v=[ A(1,2); A(2,2); A(3,2); A(4,2)]
A=[1:5; 6:10; 11:15; 0,0,0,0,0]
##### 1 件のコメント表示非表示 なし
Adam Danz 2021 年 7 月 1 日 7:08
This is not a solution. Not even close.
You're overwriting A instead of replacing the last row.
Indexing in the second line is very inefficient.
And the 2nd and 3rd lines assume A has 4 columns.
Please consider taking the Matlab on-ramp.
https://www.mathworks.com/learn/tutorials/matlab-onramp.html

サインインしてコメントする。

### Community Treasure Hunt

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

Start Hunting!