desidero scrivere uno script che, data una matrice a, restituisce il nome di ciascuna colonna come segue : a1 = a(: , 1); ecc. ecc.

2 visualizaciones (últimos 30 días)
vorrei evitare di fare a mano il seguente lavoro, data una matrice a ed il numento di colonne :
a1 = a(:,1); a2=a(:,2); ecc. ecc. ecc. sino ad an=a(:;n)
  3 comentarios
LUIGI GUGLIELMINETTI
LUIGI GUGLIELMINETTI el 24 de Dic. de 2023
Editada: Torsten el 24 de Dic. de 2023
NON VOGLIO NOMINARE LE VARIABILI "DINAMICALLY" (EVAL)
DESIDERO UNCAMENTE USUFRUIRE DI UN COMANDO CHE, DATA UNA QUALSIASI MATRICE
A CON FORMATO M X N, POSSA FARE APPARIRE A VIDEO SU MATLAB LE SEGUENTI INFORMAZIONI :
A1 = A(:,1); A2 = A(:,2); A3 = A(:,3); A4 = A(:,4); E COSI' DI SEGUITO SINO AD AN = A(:,N);
PER IL MOMENTO QUANDO MI SERVE NOMINARE IN QUESTO MODO LE COLONNE DI UNA MATRICE
DEVO FARE TUTTO A MANO QUINDI MI PIACEREBBE UTILIZZARE UN COMANDO SOTTO FORMA DI
CODICE COMPRENSIBILE ED INTERPRETABILE DA MATLAB RELEASE R2019b
GRAZIE A CHI POTRA' DARMI UNA MANO. SONO UN AUTODIDATTA ENTUSIASMATO DALL'ALGEBRA LINEARE.
LUIGI GUGLIELMINETTI
E-MAIL : l.guglielminetti@outlook.it
Translated to English:
I DO NOT WANT TO NAME THE VARIABLES "DINAMICALLY" (EVAL)
I ONLY WANT TO TAKE ADVANTAGE OF A COMMAND THAT, GIVEN ANY MATRIX
A WITH M X N FORMAT, CAN MAKE THE FOLLOWING INFORMATION APPEAR ON VIDEO ON MATLAB:
A1 = A(:,1); A2 = A(:,2); A3 = A(:,3); A4 = A(:,4); AND SO ON UNTIL AN = A(:,N);
FOR THE MOMENT WHEN I NEED TO NAME THE COLUMNS OF A MATRIX IN THIS WAY
I HAVE TO DO EVERYTHING BY HAND SO I WOULD LIKE TO USE A COMMAND IN THE FORM OF
CODE UNDERSTANDABLE AND INTERPRETABLE BY MATLAB RELEASE R2019b
THANKS TO THOSE WHO CAN GIVE ME A HAND. I AM A SELF-TAUGHT ENTHUSIASTIC ABOUT LINEAR ALGEBRA.
LUIGI GUGLIELMINETTI
E-MAIL : l.guglielminetti@outlook.it
Dyuman Joshi
Dyuman Joshi el 24 de Dic. de 2023
"A1 = A(:,1); A2 = A(:,2); A3 = A(:,3); A4 = A(:,4); E COSI' DI SEGUITO SINO AD AN = A(:,N);"
This is exactly what Dynamically naming variables is.
"PER IL MOMENTO QUANDO MI SERVE NOMINARE IN QUESTO MODO LE COLONNE DI UNA MATRICE"
I'll reiterate - Can you specify why do you have to do so?

Iniciar sesión para comentar.

Respuestas (1)

R
R el 3 de En. de 2024
Editada: R el 4 de En. de 2024
Hi Luigi,
You can achieve the desired functionality by using the "eval" function in MATLAB. Here's an example of the same:
numArrays = 10;
for i = 1:numArrays
eval(['A', int2str(i),' = A(:,i)']);
end
However, it is not recommended to use "eval" in programs. This is also suggested by Dyuman in the comments. Refer to the below link to understand why and see preferred workflows:
An alternative way could be indexing into a cell array. Here is an example:
numArrays = 10;
a = cell(numArrays,1);
for i = 1:numArrays
a{i} = A(:,i);
end
Access the data in the cell array by indexing with curly braces. For example, display the fifth element of A:
a{5}
The assignment statement a{n} = A(:,i) is more elegant and efficient than a call to "eval".
I hope you find this helpful!

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!