<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Maztrix Zeilenweise an Funktion übergeben bei ungleicher Spaltendimension]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein Problem bei dem ich nicht weiss wie es sinnvoll gelöst werden kann.</p>
<p>Ich habe eine 2-dimensionale Vektor Matrix mit M Zeilen und N+1 Spalten.</p>
<p>Ferner habe ich eine Funktion geschrieben, welche als Eingabe einen N-dimensionalen Vektor hat und als Ausgabe ebenfalls einen N-dimensionalen Vektor. Die Eingabe Vektoren haben in jeder Komponente nur 0 oder 1. Meine Funktion hat folgende Abbildungsvorschrift: 0 |-&gt; -1 und 1 |-&gt;1, realisiert durch 2*x-1 für x in {0,1}</p>
<p>Nun möchte ich die Matrix Zeilenweise an meine Funktion übergeben. Das Problem: Die erste Spalte muss dabei getrennt sein, damit die Dimensionen passen. Ein Beispiel: Die Matrix sei:</p>
<pre><code>1 0 0 0 0 
2 1 0 0 0 
3 0 1 0 0 
1 1 1 0 0 
2 0 0 1 0
</code></pre>
<p>Dann möchte ich in einer Schleife</p>
<pre><code>Funktion(0 0 0 0)
Funktion(1 0 0 0)
Funktion(0 1 0 0)
Funktion(0 0 1 0)
</code></pre>
<p>Um dies zu erreichen:</p>
<pre><code>1 -1 -1 -1 -1 
2  1 -1 -1 -1 
3 -1  1 -1 -1 
1  1  1 -1 -1 
2 -1 -1  1 -1
</code></pre>
<p>Sprich die 1. Spalte der Matrix bleibt unverändert und der Rest wird zeilenweise neu berecnet.</p>
<p>Was ist da ein eleganter Weg das zu realisieren?</p>
<p>Danke und Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/339593/maztrix-zeilenweise-an-funktion-übergeben-bei-ungleicher-spaltendimension</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 01:04:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339593.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Sep 2016 12:53:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Maztrix Zeilenweise an Funktion übergeben bei ungleicher Spaltendimension on Mon, 12 Sep 2016 12:53:32 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein Problem bei dem ich nicht weiss wie es sinnvoll gelöst werden kann.</p>
<p>Ich habe eine 2-dimensionale Vektor Matrix mit M Zeilen und N+1 Spalten.</p>
<p>Ferner habe ich eine Funktion geschrieben, welche als Eingabe einen N-dimensionalen Vektor hat und als Ausgabe ebenfalls einen N-dimensionalen Vektor. Die Eingabe Vektoren haben in jeder Komponente nur 0 oder 1. Meine Funktion hat folgende Abbildungsvorschrift: 0 |-&gt; -1 und 1 |-&gt;1, realisiert durch 2*x-1 für x in {0,1}</p>
<p>Nun möchte ich die Matrix Zeilenweise an meine Funktion übergeben. Das Problem: Die erste Spalte muss dabei getrennt sein, damit die Dimensionen passen. Ein Beispiel: Die Matrix sei:</p>
<pre><code>1 0 0 0 0 
2 1 0 0 0 
3 0 1 0 0 
1 1 1 0 0 
2 0 0 1 0
</code></pre>
<p>Dann möchte ich in einer Schleife</p>
<pre><code>Funktion(0 0 0 0)
Funktion(1 0 0 0)
Funktion(0 1 0 0)
Funktion(0 0 1 0)
</code></pre>
<p>Um dies zu erreichen:</p>
<pre><code>1 -1 -1 -1 -1 
2  1 -1 -1 -1 
3 -1  1 -1 -1 
1  1  1 -1 -1 
2 -1 -1  1 -1
</code></pre>
<p>Sprich die 1. Spalte der Matrix bleibt unverändert und der Rest wird zeilenweise neu berecnet.</p>
<p>Was ist da ein eleganter Weg das zu realisieren?</p>
<p>Danke und Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2508315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508315</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Mon, 12 Sep 2016 12:53:32 GMT</pubDate></item><item><title><![CDATA[Reply to Maztrix Zeilenweise an Funktion übergeben bei ungleicher Spaltendimension on Mon, 12 Sep 2016 13:33:20 GMT]]></title><description><![CDATA[<p>Du willst also nur einen Teil eines Vectors übergeben?<br />
Wir wäre es dann mit gsl::span? Siehe <a href="https://github.com/Microsoft/GSL" rel="nofollow">https://github.com/Microsoft/GSL</a></p>
<p>Aber, was hier viel besser wäre: du übergibst nicht den vector, sondern wie anderswo in der stl üblich einen begin- und end-Iterator. Dann rufst du deine Funktion nämlich einfach mit <code>zeile.begin() + 1</code> , <code>zeile.end()</code> auf und fertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2508320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508320</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Mon, 12 Sep 2016 13:33:20 GMT</pubDate></item><item><title><![CDATA[Reply to Maztrix Zeilenweise an Funktion übergeben bei ungleicher Spaltendimension on Mon, 12 Sep 2016 16:05:03 GMT]]></title><description><![CDATA[<p>Ich habe bis dato noch nicht mit Iteratoren gearbeitet. Ich habe vorhin in meinem Buch dazu gelesen. Dachte mir fange klein an und versuche die Matrix erstmal auszugeben. Das hat geklappt und zwar so:</p>
<pre><code>for(i=0; i&lt;Var._SampleSize; i++){
  for(std::vector&lt;int&gt;::iterator it=CSpace[i].begin(); it != CSpace[i].end(); it++){
    std::cout &lt;&lt; *it &lt;&lt; &quot; &quot;;
  }
std::cout &lt;&lt; std::endl;
}
</code></pre>
<p>Var._SampleSize ist die Anzahl der Zeilen der Matrix. CSpace ist der Name der Matrix.</p>
<p>Wie kann ich nun so iterieren, dass das erste Element übersprungen wird?</p>
<p>Sprich meine derzeitige Ausgabe ist:</p>
<pre><code>0 0 0 0 0 
0 1 0 0 0 
0 0 1 0 0 
0 1 1 0 0 
0 0 0 1 0 
0 1 0 1 0 
0 0 1 1 0 
0 1 1 1 0 
0 0 0 0 1 
0 1 0 0 1 
0 0 1 0 1 
0 1 1 0 1 
0 0 0 1 1 
0 1 0 1 1 
0 0 1 1 1 
0 1 1 1 1
</code></pre>
<p>und was ich erstmal versuchen möchte ist:</p>
<pre><code>0 0 0 0 
1 0 0 0 
0 1 0 0 
1 1 0 0 
0 0 1 0 
1 0 1 0 
0 1 1 0 
1 1 1 0 
0 0 0 1 
1 0 0 1 
0 1 0 1 
1 1 0 1 
0 0 1 1 
1 0 1 1 
0 1 1 1 
1 1 1 1
</code></pre>
<p>Danke und Grüße</p>
<p><strong>NACHTRAG</strong></p>
<p>Mein Gott das ist ja viel simpler als erwartet. Einfach +1 an die begin() Methode <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Jetzt versuche ich das in eine Funktion zu übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2508349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508349</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Mon, 12 Sep 2016 16:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Maztrix Zeilenweise an Funktion übergeben bei ungleicher Spaltendimension on Mon, 12 Sep 2016 16:08:43 GMT]]></title><description><![CDATA[<p>Ersetze, wie ich oben schrieb, begin() durch begin()+1.</p>
<p>Also:</p>
<pre><code>for (auto it = CSpace[i].begin() + 1; it != CSpace[i].end(); ++it) {
    std::cout &lt;&lt; *it &lt;&lt; &quot; &quot;;
}
</code></pre>
<p>(ich hab den Typen der Einfachheit mal durch auto ersetzt sowie post- in pre-increment geändert)</p>
<p>Achtung: Code setzt <code>CSpace[i].empty() == false</code> voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2508356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508356</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Mon, 12 Sep 2016 16:08:43 GMT</pubDate></item><item><title><![CDATA[Reply to Maztrix Zeilenweise an Funktion übergeben bei ungleicher Spaltendimension on Mon, 12 Sep 2016 16:17:38 GMT]]></title><description><![CDATA[<p>Habe ich bereits erledigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich komme aber noch nicht dahinter wie ich das jetzt an meine Funktion übergebe</p>
<p>Das hier ist falsch:</p>
<pre><code>for(i=0; i&lt;Var._SampleSize; i++){  
   for(std::vector&lt;int&gt;::iterator it=CSpace[i].begin()+1; it != CSpace[i].end(); it++){
      BinToBip(CSpace[i].begin() + 1, CSpace[i].end());
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2508357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508357</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Mon, 12 Sep 2016 16:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to Maztrix Zeilenweise an Funktion übergeben bei ungleicher Spaltendimension on Mon, 12 Sep 2016 16:28:58 GMT]]></title><description><![CDATA[<p>Ich habe das Problem jetzt so gelöst bekommen, dass ich in jedem Container den Wert habe berechnen lassen, was sonst die Funktion hätte machen sollen. Also:</p>
<pre><code>for(i=0; i&lt;Var._SampleSize; i++){  
   for(auto it=CSpace[i].begin()+1; it != CSpace[i].end(); it++){
      *it=2*(*it)-1;
   }
}
</code></pre>
<p>Trotzdem würde ich sehr gerne wissen wie ich das an meine Funktion übergeben kann wie ursprünglich gedacht. Diese nimmt ja nur einen Vektor an.</p>
<p>Danke für die Hilfe und Geduld und viele Grüße <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2508360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508360</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Mon, 12 Sep 2016 16:28:58 GMT</pubDate></item><item><title><![CDATA[Reply to Maztrix Zeilenweise an Funktion übergeben bei ungleicher Spaltendimension on Tue, 13 Sep 2016 07:21:31 GMT]]></title><description><![CDATA[<p>Wenn Deine Matrix eine Matrix im mathematischen Sinne ist, kannst Du (wenn mich meine LA Künste nicht trügen) auch mit der Matrix</p>
<pre><code>1 0 0 0 0
0 2 0 0 0
0 0 2 0 0
0 0 0 2 0
0 0 0 0 2
</code></pre>
<p>multiplizieren und die Matrix</p>
<pre><code>0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
</code></pre>
<p>abziehen.<br />
Vorausgesetzt, da stehen wirklich nur Nullen und Einsen in den rechten Spalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2508426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508426</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 13 Sep 2016 07:21:31 GMT</pubDate></item></channel></rss>