Trasformare in funzione questo codice

di il
5 risposte

Trasformare in funzione questo codice

Vorrei creare una funzione che presa una matrice M la stampa su un file chiamato variabili.cs. Questo é il codice che uso ora:
Matrice = [
    1 2 3 4
    1 2 3 4
    1 2 3 4
    1 2 3 8
];
fid = fopen('variabili.cs','wt');
for i=1:length(Matrice)
    fprintf(fid,'{');
    for j=1:4
        fprintf(fid,'%10f',Matrice(i,j));
        if j ~= 4;
            fprintf(fid,'   ,');
        elseif j == 4 &&  i ~= length(Matrice);
            fprintf(fid,'   },');
        elseif j == 4 &&  i == length(Matrice);
            fprintf(fid,'   }};');   
        end
    end
    fprintf(fid,'\n');
end
fclose(fid);
Ho già provato in mille modi ma non ci sono riuscito...

Mi date qualche aiutino?

5 Risposte

  • Re: Trasformare in funzione questo codice

    Intanto... non serve tutto quel codice... basta una riga (al posto di tutto il ciclo for)...

    fprintf('{ %d, %d, %d, %d }\n', A)

    Poi, in che modo hai provato?
  • Re: Trasformare in funzione questo codice

    Un infinità di modi, non li ricordo più... ti riporto un esempio:

    file A
    function [fid] = matlabcsharp(Matrice)
    fid = fopen('variabili.cs','wt');
    fprintf(fid,'using System;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Collections.Generic;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Linq;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Text;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows.Controls;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows.Data;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows.Documents;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows.Input;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows.Media;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows.Media.Imaging;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows.Navigation;');
    fprintf(fid,'\n');
    fprintf(fid,'using System.Windows.Shapes;');
    fprintf(fid,'\n');
    fprintf(fid,'namespace WpfApplication1');
    fprintf(fid,'\n');
    fprintf(fid,'{');
    fprintf(fid,'\n');
    fprintf(fid,'/// <summary>');
    fprintf(fid,'\n');
    fprintf(fid,'/// Logica di interazione per MainWindow.xaml');
    fprintf(fid,'\n');
    fprintf(fid,'/// </summary>');
    fprintf(fid,'\n');
    fprintf(fid,'/// ');
    fprintf(fid,'\n');
    fprintf(fid,'partial class MainWindow');
    fprintf(fid,'\n');
    fprintf(fid,'{');
    fprintf(fid,'\n');
    fprintf(fid,'double[,] abaco = {');
    fprintf(fid,'\n');
    for i=1:length(Matrice)
        fprintf(fid,'{');
        for j=1:4
            fprintf(fid,'%10f',Matrice(i,j));
            if j ~= 4;
                fprintf(fid,'   ,   ');
            elseif j == 4 &&  i ~= length(Matrice);
                fprintf(fid,'   },');
            elseif j == 4 &&  i == length(Matrice);
                fprintf(fid,'   }};');   
            end
        end
        fprintf(fid,'\n');
    end
    fprintf(fid,'}');
    fprintf(fid,'\n');
    fprintf(fid,'}');
    fclose(fid);
    return
    end
    file B
    stampa = matlabcsharp(Matrice);
    Il tuo script non mi funziona ma in questo momento ho altri problemini, poi ci rifletto...

    Grazie mille
  • Re: Trasformare in funzione questo codice

    Nella mia riga di codice manca il fid come primo argomento fprintf(fid,'{ %d, %d, %d, %d }\n', Matrice), poi lo puoi sostituire all'intero ciclo (dopo l'fopen e prima dell'fclose).
    Secondo me la funzione non deve avere uscite. Tu non sei interessato al "fid" che è semplicemente un numero che identifica il file aperto. Anche perché dopo l'fclose il fid si azzera.
    A te la cosa che interessa è che venga creato il file, che avviene tramite le istruzioni che hai scritto indipendentemente dalle uscite della funzione.
    Prova a togliere l'uscita.
    function [] = matlabcsharp(Matrice)
    e quando la richiami scrivi solo:
    matlabcsharp(Matrice);

    Questo codice funziona (l'ho provato).
  • Re: Trasformare in funzione questo codice



    Wawwwwwww!!!!!

    Bravissimo!
  • Re: Trasformare in funzione questo codice

    Grazie grazie
Devi accedere o registrarti per scrivere nel forum
5 risposte