Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149

    [Java]Elaborare risultati Matlab

    ciao,
    ho dei file funzione (*.m) esportati da matlab in un jar. importo il jar nel progetto java e tutto ok.
    visto che tutti gli output delle funzioni matlab in java (utilizzando il jabuilder) sono Object[] stavo cercando di creare una classe intermedia per convertire i risultati in un formato leggibile.

    ho qualche problema con l'output di stringhe e di array (che probabilmente vengono gestiti nello stesso modo in quanto le stringhe sono array di caratteri)

    allora in matlab ho creato queste funzioni
    Codice PHP:
    %#quella che vorrei usare
    function out outInt8Array
        out 
    1:5;
        
    out int8(out);
    %
    #altra versione con parentesi ma che da comunque errore
    function out outInt8Array()
        
    out 1:5;
        
    out int8(out);

    %
    #versione con passaggio di parametro
    function out outInt8Array2(n)
        
    out 1:n;
        
    out int8(out);

    %
    #versione con passaggio di parametro inutile ma che non da errore
    function out outInt8Array3(n)
        
    out 1:5;
        
    out int8(out); 
    eseguendo queste tre funzioni in java, outInt8Array2 e outInt8Array3 non danno errori
    mentre outInt8Array lancia la seguente eccezione
    Codice PHP:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException0
        at basics
    .useMyClass.getInt8s(useMyClass.java:139)
        
    at basics.useMyClass.main(useMyClass.java:217
    quindi da quanto ottengo credo che sia il passaggio di parametri a dare errore (visto che le funzioni sono uguali tranne che per la presenza o no dei parametri

    da Java le funzioni le richiamo in questo modo
    Codice PHP:
        public static byte[] getInt8s() {
            
    BasicTypesArray Class = null;
            
    Object[] null;

            try {
                Class = new 
    BasicTypesArray();
                
    //y = Class.outInt8Array3(1, new Double((double) 5));
                
    = Class.outInt8Array(0);
                            
                return (
    byte[]) ((MWArrayy[0]).getData();
            }

            catch (
    MWException e) {
                
    System.err.println(e.getMessage());
            }

            finally {
                
    MWArray.disposeArray(y);
                if (Class != 
    null)
                    Class.
    dispose();
            }

            
    byte[] ret = {};
            return 
    ret;
        } 
    qualche idea di come risolvere?
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  2. #2
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    ciao,
    risolto!!! so che sembra che non mi ero impegnato prima...ma non è così...ci ho sbattuto la testa per almeno un mese e poi sbagliavo concettualmente

    nella chiamata della funzione matlab da java il primo parametro è il numero di output della funzione

    quindi ad esempio per una funzione così
    Codice PHP:
    %#file: foo.m
    function [a,b,c] = foo(n)
       
    a=n/2;
       
    b=n/3;
       
    c=n/4
    in java devo richiamarla come
    Codice PHP:
    Object[] = <nome_classe>.foo(326);
    // 3 sono il numero di output
    // 26 è l'n di input 
    magari serve a qualcun'altro
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.