How to get column function result into separate variables?

What I mean is you can do:
A=rand(2);
[a,b]=size(A);
But is it possible to do something like:
A=rand(2);
[a;b]=size(A)';

댓글 수: 1

Stephen23
Stephen23 2018년 10월 14일
편집: Stephen23 2018년 10월 14일
"How to get column function result into separate variables?"
The question is not clear. The output of size as you are using it with two output arguments is NOT one "vector", it is two output arguments which have absolutely no dimensional/positional/... relationship with each other. Definitely NOT one "vector" or array as you seem to assume:
[a,b]=size(A);
^^^^^ This is NOT a row vector!

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

답변 (2개)

KALYAN ACHARJYA
KALYAN ACHARJYA 2018년 10월 14일
편집: KALYAN ACHARJYA 2018년 10월 14일
But is it possible to do something like:
No, size(X) returns the row vector [1 1].
A=rand(2);
[a;b]=size(A)';
If you tried this one [a;b], it is vector [2,1]
This see the example, you can do this one, this way
>> [a b]=size(A);
>> t=[a b]'
t =
2
2
[m,n]=size(X) returns the size of matrix X in separate variables m and n, here you can use the intermediates variables.
What you have tried, get the size, it must be stored in variables [a;b], if you directly tried another function (transpose) without store it, how can you do that.
--------
A=rand(2);
[a b]=size(A');

댓글 수: 4

Maybe size() wasn't best example here. How to deal with this one:
A=rand(2);
B=rand(2,1);
[x;y]=A*B; %incorrect
What you want to do exactly?
I'm just curious if it is possible to get x and y like in this example without creating additional temporary variables (and also I don't want to replace [x;y] with a single vector).
Check with whos, I found a very important question, Thanks for the question, learning for me also
>> A=rand(2);
B=rand(2,1);
>> C=A*B;
>> y=[6;7];
>> whos
Name Size Bytes Class Attributes
A 2x2 32 double
B 2x1 16 double
C 2x1 16 double
y 2x1 16 double

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

Walter Roberson
Walter Roberson 2018년 10월 14일
You should have a look at deal() -- though if you do not use a temporary variable then it helps to use an auxiliary function
expand_cell = @(C) C{:};
[x, y] = expand_cell( num2cell( A* B) );

카테고리

도움말 센터File Exchange에서 Vehicle Dynamics Blockset에 대해 자세히 알아보기

제품

릴리스

R2018b

태그

질문:

2018년 10월 14일

편집:

2018년 10월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by