Bearbeitung von Matrizen

seide

Mitglied
Hallo zusammen, ich brauche eure Hilfe.
Ich habe Klasse Vektor und Klasse Matrix:
Java:
public class Vektor {
	private double[] vektor;

	public Vektor() {
		this.vektor = new double[0];
	}

	public Vektor(Vektor cop) {
		vektor = cop.vektor;
	}

	public Vektor(double[] vek) {
		int N = vek.length;
		this.vektor = new double[N];
		for (int i = 0; i < N; i++)
			this.vektor[i] = vek[i];
	}

	public Vektor(int size) {
		this.vektor = new double[size];
	}
}

Java:
public class Matrix {

	private double[][] matrix;
	private int zeilen;
	private int spalten;

	public Matrix() {
		this.matrix = new double[0][0];
	}

	public Matrix(Matrix mat) {
		zeilen = mat.getZeile();
		spalten = mat.getSpalten();
		matrix = new double[zeilen][spalten];
		for (int i = 0; i < zeilen; i++) {
			for (int j = 0; j < spalten; j++) {
				matrix[i][j] = mat.matrix[i][j];
			}
		}
	}

	public int getSpalten() {
		// Spaltenlänge
		return matrix.length;
	}

	public int getZeile() {
		// Zeilenlänge
		return matrix[0].length;
	}

	public Matrix(double[][] zweid) {
		matrix = zweid;
		spalten = getSpalten();
		zeilen = getZeile();
	}

	public Matrix(int anzahlZeile, int anzahlSpalte) {
		this.matrix = new double[anzahlZeile][anzahlSpalte];
	}

	public Matrix(int zahl) {
		this.matrix = new double[zahl][zahl];
	}

	public int[] getLength() {
		int[] laenge = new int[matrix.length];
		System.out.println("Die länge von Array: " + laenge.length);
		return laenge;
	}

	public Vektor summeProZeile() {
		double sum = 0;
		for (int row = 0; row < matrix.length; row++) {
			for (int col = 0; col < matrix[row].length; col++) {
				sum = sum + matrix[row][col];
			}
			System.out.println(sum);
		}
		return null;
	}

	public Vektor maxProZeile() {
		for (int row = 0; row < matrix.length; row++) {
			double max = matrix[row][0];
			for (int col = 1; col < matrix[row].length; col++) {
				if (matrix[row][col] > max)
					max = matrix[row][col];
			}
			System.out.println("Maximum in zeile[" + row + "]: " + max);
		}
		return null;
	}

	}
in der Klasse Matrix, Methode summeProZeile() liefert ein Vektor-Objekt mit den Summe pro Zeile und Methode maxProZeile() liefert ein Vektor-Objekt mit maximalen Werten. Also ich weiss nicht wie kann ich Vektor-Objekt zurückliefern?
 
Grundsätzlich mit
Java:
public Vektor getVektor(...) {
return varVektor;
}

wobei varVektor irgendwie vorher definiert werden muss. Läuft wie mit int und String. Also in dieser Methode den Vektor erstellen mit Werten und dann zurückgeben.
 
Grundsätzlich mit
Java:
public Vektor getVektor(...) {
return varVektor;
}

wobei varVektor irgendwie vorher definiert werden muss. Läuft wie mit int und String. Also in dieser Methode den Vektor erstellen mit Werten und dann zurückgeben.

Naja das verstehe ich, aber z.b. hier:
Java:
public Vektor maxProZeile() {
        for (int row = 0; row < matrix.length; row++) {
            double max = matrix[row][0];
            for (int col = 1; col < matrix[row].length; col++) {
                if (matrix[row][col] > max)
                    max = matrix[row][col];
            }
            System.out.println("Maximum in zeile[" + row + "]: " + max);
        }
        return null;
    }

also ich verstehe nicht wie soll ich max als Vektor setzen, weil Vektor bei mir ist eindimensionale und matrix zweidimensionale.
 
Du erstellst ein Array mit doubleWerten und dann einen neuen Vektor mit
Java:
Vektor v1 = new Vektor(meinDoubleArray)

Wenn die Frage war, was im Vektor stehen muss, stell sie bitte auch so.

M:
1 2 3
3 2 3
4 0 0

Soll dann der Vektor (3,3,4) sein?
 
z.B. so:

Java:
    public Vektor maxProZeile() {
        double[] maxValues = new double[matrix.length];
        for (int row = 0; row < matrix.length; row++) {
            double max = matrix[row][0];
            for (int col = 1; col < matrix[row].length; col++) {
                if (matrix[row][col] > max)
                    max = matrix[row][col];
            }
            maxValues[row]=max;
            System.out.println("Maximum in zeile[" + row + "]: " + max);
        }

        return new Vektor(maxValues);
    }
 
Bleibt ja noch die Aufgabe mit den Summen pro Zeile. Von daher muss sich seide mit der Lösung beschäftigen, um die Methode
Code:
summeProZeile
hinzubekommen.
 
Ich habe noch eine Frage.
Die methode kumuliertProZeile() liefert ein Vector mit den kumulierten Werten einer Zeile.
Kumulierten Werten- bedeuted das die Summe?
z.b:
double[][] array={{2,4,1},{1,1,1},{2,3,1}}

also ich möchte in der Zeile 2 Werte kumulieren.Soll dann die Methode, 6 als Vector zurückgeben?
 
Tja, da musst du deine Frage genauer stellen *g*. Zweite Zeile der Matrix wäre 1 1 1, zweite Zeile im Array 2 3 1. Was mich nur wundert ist, dass du ja schon eine Methode summeProZeile hast, die ja anscheinend genau das gleiche machen würde.

Edit: Habe gerade mal nachgeguckt. Ich glaube mit Kommulierten Werten ist was anderes gemeint:

Für Die Zeile 2 3 1 in der Matrix wäre es dann der folgende Vektor:

2 5 6

weil am Anfang hast du die 2 -> erster Wert 2
dann addierst du 3 -> zweiter Wert 2 + 3=5
dann addierst du 1 -> dritter Wert 5 + 1 = 6
 
Zuletzt bearbeitet:
Tja, da musst du deine Frage genauer stellen *g*. Zweite Zeile der Matrix wäre 1 1 1, zweite Zeile im Array 2 3 1. Was mich nur wundert ist, dass du ja schon eine Methode summeProZeile hast, die ja anscheinend genau das gleiche machen würde.

in der Methode summeProZeile() gibt zurück alle Zeile, jetzt soll nur die i-te Zeile bearbeiten, aber ich weiss schon wie das geht, nur ich war nicht sicher was bedeutet kumulieren😳.
 

Neue Themen


Zurück
Oben