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

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
LUIGI GUGLIELMINETTI
LUIGI GUGLIELMINETTI il 24 Dic 2023
Modificato: Torsten il 24 Dic 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 il 24 Dic 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?

Accedi per commentare.

Risposte (1)

R
R il 3 Gen 2024
Modificato: R il 4 Gen 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!

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!