Need command help for a specific matrix operation

1 Ansicht (letzte 30 Tage)
Surjya padhi
Surjya padhi am 3 Mai 2012
hi,
I need the command help to do the following. Situation.
A = [2 3 4;7 8 1;3 2 7;1 9 3];
I want to square this matrix and then want to save the 2nd and 3rd row of the result matrix(4x3) matrix to another matrix of 2x3 dimension. I can do like this
B = A.^2; C = B(2:3,:); now C contains my required result.
But I want to avoid the intermediate step of first saving it in matrix B above. I want the C matrix directly from A. I need a single line command for above two statements.
I tried like following C = (A.^2)(2:3,:); But it is showing syntax error.
Please help me in this.

Antworten (3)

Richard Brown
Richard Brown am 3 Mai 2012
EDIT Needed to strain my eyes harder to figure out that the matrix in question had 4 rows
C = [0 1 0 0; 0 0 1 0] * A.^2;
  3 Kommentare
Geoff
Geoff am 3 Mai 2012
Don't blame you for mistaking that. The use of whitespace in computer languages is just as important as in human languages, even if it's not strictly necessary. I love languages like Python that recognise this and actually make whitespace part of the syntax!

Melden Sie sich an, um zu kommentieren.


Andrei Bobrov
Andrei Bobrov am 3 Mai 2012
A(2:3,:).^2

Walter Roberson
Walter Roberson am 3 Mai 2012
This is the official mechanism for the kind of indexing of results that you want to do:
subsref(A.^2, struct('type', '()', 'subs', {{2:3, ':'}}))
You can wrap the functionality into anonymous functions to make it look more compact.

Community Treasure Hunt

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

Start Hunting!

Translated by