Aiuto programma Matlab 2
Salve a tutti ragazzi, nuovo programma e io sono di nuovo punto e a capo. Penso di avere bisogno del vostro aiuto almeno fino a che non entrerò nella mentalità del "programmatore livello base"
Allora,
Scrivere una funzione Matlab che ha in input una matrice $\A (m × n)$ ed un indice
$\i$, con $\1 ≤ i ≤ m$, ed in output una variabile logica $\s$ cos` definita:
$\s = 1$ se ogni elemento della i-esima riga di $\A$ è` minore della somma dei rimanenti
elementi della colonna a cui esso appartiene;
$\s = 0$ altrimenti.
Il mio vago tentativo è questo, ma manca davvero (quasi) tutto

Scrivere una funzione Matlab che ha in input una matrice $\A (m × n)$ ed un indice
$\i$, con $\1 ≤ i ≤ m$, ed in output una variabile logica $\s$ cos` definita:
$\s = 1$ se ogni elemento della i-esima riga di $\A$ è` minore della somma dei rimanenti
elementi della colonna a cui esso appartiene;
$\s = 0$ altrimenti.
Il mio vago tentativo è questo, ma manca davvero (quasi) tutto
function [s] = elem_matrix(A) % Mette in evidenza un particolare proprietà di una matrice for i=1:m if x(i)< s=1 else s=0 end
Risposte
Per prima cosa la richiesta dell'esercizio richiede due parametri da passare alla funzione, A e i. Per cui il primo passaggio è quello di correggere la prima riga del tuo codice in modo che la funzione accetti due argomenti:
A questo punto devi fare un ciclo tra tutti gli elementi della i-esima riga. La i-esima riga è rappresentata da tutti gli elementi della matrice del tipo A(i,j) al variare di j. Un ciclo su tutti gli elementi di questa riga sarà quindi formata da un codice come il seguente:
Non ho ora il tempo di discutere la risoluzione del problema nel dettaglio, ma non puoi usare m ed n in quel modo in quanto non sono mai stati definiti. Per poter usare m ed n dovresti quindi aggiungere all'inizio la riga:
Per la risoluzione del problema ti dico per ora solo che devi fare un ciclo su tutti gli elementi della riga come ti ho mostrato sopra e all'interno di questo ciclo puoi scegliere se fare la somma degli elementi della colonna (devi fissare j e far variare il primo indice) usando un ciclo o la funzione sum (questa seconda opzione è nella pratica solitamente preferibile).
function [s] = elem_matrix(A, i)
A questo punto devi fare un ciclo tra tutti gli elementi della i-esima riga. La i-esima riga è rappresentata da tutti gli elementi della matrice del tipo A(i,j) al variare di j. Un ciclo su tutti gli elementi di questa riga sarà quindi formata da un codice come il seguente:
for j=1:n % fai qui qualcosa con A(i,j) end
Non ho ora il tempo di discutere la risoluzione del problema nel dettaglio, ma non puoi usare m ed n in quel modo in quanto non sono mai stati definiti. Per poter usare m ed n dovresti quindi aggiungere all'inizio la riga:
[m,n] = size(A);
Per la risoluzione del problema ti dico per ora solo che devi fare un ciclo su tutti gli elementi della riga come ti ho mostrato sopra e all'interno di questo ciclo puoi scegliere se fare la somma degli elementi della colonna (devi fissare j e far variare il primo indice) usando un ciclo o la funzione sum (questa seconda opzione è nella pratica solitamente preferibile).
Grazie per la risposta apatriarca e scusa il ritardo ma ho la possibilità di studiare solo la sera!
Ora, veniamo a noi..questi sono i miglioramenti da ieri grazie a i tuoi consigli
Ora..come faccio a facendo
Ho dato unìocchiata alla funzione sum e penso potrei continuare dicendo
Anche se per caso ciò fosse giusto come posso farlo senza usare sum? Non riesco a tradurre in codice il tuo consiglio a riguardo!
Ps. mi da sempre errore sull'else dice Parse invalid Matlab Sintax
Grazie mille per l'aiuto!
Ora, veniamo a noi..questi sono i miglioramenti da ieri grazie a i tuoi consigli
function [s] = elem_matrix(A,i) % Mette in evidenza una particolare proprietà di una matrice [m,n]=size(A); for j=1:n if A(i,j)< s=1 end else s=0; end end
Ora..come faccio a facendo
if A(i,j)penso sia come dire al calcolatore.."se ogni elemento di una qualsiasi riga di A.." ora come faccio a continuare dicendo "..è minore della somma dei rimanenti elementi della colonna" ?
Ho dato unìocchiata alla funzione sum e penso potrei continuare dicendo
if A(i,j)<sum(A)
Anche se per caso ciò fosse giusto come posso farlo senza usare sum? Non riesco a tradurre in codice il tuo consiglio a riguardo!
Ps. mi da sempre errore sull'else dice Parse invalid Matlab Sintax
Grazie mille per l'aiuto!

L'errore sull'else dovrebbe essere dovuto alla presenza dell'end subito prima. Scrivi end dopo il corpo dell'else.
"apatriarca":
L'errore sull'else dovrebbe essere dovuto alla presenza dell'end subito prima. Scrivi end dopo il corpo dell'else.
Perfetto grazie mille della risposta apatriarca
