Borrar filtros
Borrar filtros

How to name every row of 100*2500 matrix?

2 visualizaciones (últimos 30 días)
Md Monirul Islam
Md Monirul Islam el 1 de Nov. de 2017
Comentada: Steven Lord el 27 de Nov. de 2020
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 comentarios
Md Monirul Islam
Md Monirul Islam el 1 de Nov. de 2017
Editada: per isakson el 1 de Nov. de 2017
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 el 1 de Nov. de 2017
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.

Iniciar sesión para comentar.

Respuesta aceptada

per isakson
per isakson el 1 de Nov. de 2017
Editada: per isakson el 1 de Nov. de 2017
"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 comentarios
Muhammad Ammar bin Faizul Azli
Muhammad Ammar bin Faizul Azli el 27 de Nov. de 2020
@Stephen Cobeldick
May i know what would your code be if i were to do the same for column?
Steven Lord
Steven Lord el 27 de Nov. de 2020
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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Graph and Network Algorithms en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by