필터 지우기
필터 지우기

How to name every row of 100*2500 matrix?

조회 수: 2 (최근 30일)
Md Monirul Islam
Md Monirul Islam 2017년 11월 1일
댓글: Steven Lord 2020년 11월 27일
currently i am working with a matrix. The dimension of the matrix is 100*2500. I need to assign each row the matrix to a new variable. How i can do this?
  댓글 수: 6
Md Monirul Islam
Md Monirul Islam 2017년 11월 1일
편집: per isakson 2017년 11월 1일
Let me clear it. Let data = ones(3,5); So all I want is as followings:
row1= data(1,:), row2=data(2,:) and row3= data(3,:).
Les Beckham
Les Beckham 2017년 11월 1일
But Matlab is designed to allow you to operate on matrices and (more specifically, in this case) subsets of matrices using indexing. That is what per has suggested and, I think, you should try. You don't need to give a separate name like row1 to data(1,:), etc. -- just apply your operation to data(1,:), probably using a loop where the 1 is replaced by the loop index. Then you don't have to code a hundred lines to process row1 through row100.
Please note especially the last bullet in per's last comment.

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

채택된 답변

per isakson
per isakson 2017년 11월 1일
편집: per isakson 2017년 11월 1일
"So all I want is as followings" See TUTORIAL: Why Variables Should Not Be Named Dynamically (eval). However, I guess you need to make your own mistakes to understand that it's a really bad idea.
M = ones( 3, 5 );
for rr = 1 : size(M,1)
variable_name = sprintf( 'row%03d', rr );
assign( variable_name, M(rr,:) );
end
where
function assign( varargin )
switch nargin
case { 2 },
if isvarname( varargin{ 1 } )
Name = varargin{ 1 };
else
error( ['poi: First input argument, ', ...
inputname(1), ' must be a legal name'] ),
end,
Value = varargin{ 2 };
otherwise
error( 'poi: Wrong number of input arguments' ),
end
assignin( 'caller', Name, Value );
end
  댓글 수: 6
Muhammad Ammar bin Faizul Azli
Muhammad Ammar bin Faizul Azli 2020년 11월 27일
@Stephen Cobeldick
May i know what would your code be if i were to do the same for column?
Steven Lord
Steven Lord 2020년 11월 27일
With functionality available now, I'd probably use a table array instead of a numeric array.
cities = ["Albuquerque"; "Boston"; "Chicago"; "Dallas"];
dist = array2table(magic(4), 'VariableNames', cities, 'RowNames', cities)
dist = 4x4 table
Albuquerque Boston Chicago Dallas ___________ ______ _______ ______ Albuquerque 16 2 3 13 Boston 5 11 10 8 Chicago 9 7 6 12 Dallas 4 14 15 1
distBC = dist{'Boston', 'Chicago'}
distBC = 10

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Graph and Network Algorithms에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by