<?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[Fallunterscheidungen Matrix und Skalarprodukt]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe eine Matrix A mit m Zeilen und n Spalten, sowie eine Matrix B mit p Zeilen und n+1 Spalten, ferner ist p größer als m. In der A Matrix sind alle Koeffizienten binäre, also 0 oder 1. In der B Matrix ist die erste Spalte eine natürliche Zahl zwischen 0 und m (das gleiche m wie die Zeilenzahl von A) und die restlichen n Spalten sind hier ebenfalls binär. Die natürlichen Zahlen in der ersten Spalten kommen mehrfach vor.</p>
<p>Hier ein Beispiel wie die Matrizen aussehen können:</p>
<p>A-Marix:<br />
0 0 0<br />
1 1 0<br />
0 0 1<br />
1 1 1</p>
<p>B-Marix:<br />
1 0 0 0<br />
2 1 0 0<br />
2 0 1 0<br />
2 1 1 0<br />
3 0 0 1<br />
4 1 0 1<br />
4 0 1 1<br />
4 1 1 1</p>
<p>Mein Ziel ist nun das Skalarprodukt von jedem (binären!) Zeilenvekor aus B (also ohne die erste Spalte) mit demjenigen Zeilenvektor aus A zu berechnen, dessen Zeilenindex gegeben ist durch die natürliche Zahl aus der ersten Spalte der B-Matrix.</p>
<p>Im Beispiel:<br />
(0 0 0) aus A multipliziert mit (0 0 0) aus B, weil die 1 in der ersten Spalte in der ersten Zeile nur einmal vorkommt. Dann (1 0 0) mal (1 1 0) sowie (0 1 0) mal (1 1 0) und (1 1 0) mal (1 1 0) weil die Zwei in drei Zeilen von B steht und diese Zwei den zweiten Zeilenvektor aus A repräsentiert. Dann das selbe Vorgehen einmal für die Drei und zuletzt Drei mal für die Vier.</p>
<p>Am Ende möchte ich so eine (m x p)-Matrix C erhalten, in der alle diese Skalarprodukte stehen.</p>
<p>Mein Hauptproblem ist nun, dass ich konzeptionell nicht weiss wie so etwas zu programmieren ist. Von Hand ist ganz klar was ich meine und wie das geht, aber wie programmiert man das?</p>
<p>Danke für die Hilfe und Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/335324/fallunterscheidungen-matrix-und-skalarprodukt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 22:23:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/335324.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Nov 2015 15:24:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Fri, 13 Nov 2015 15:26:45 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe eine Matrix A mit m Zeilen und n Spalten, sowie eine Matrix B mit p Zeilen und n+1 Spalten, ferner ist p größer als m. In der A Matrix sind alle Koeffizienten binäre, also 0 oder 1. In der B Matrix ist die erste Spalte eine natürliche Zahl zwischen 0 und m (das gleiche m wie die Zeilenzahl von A) und die restlichen n Spalten sind hier ebenfalls binär. Die natürlichen Zahlen in der ersten Spalten kommen mehrfach vor.</p>
<p>Hier ein Beispiel wie die Matrizen aussehen können:</p>
<p>A-Marix:<br />
0 0 0<br />
1 1 0<br />
0 0 1<br />
1 1 1</p>
<p>B-Marix:<br />
1 0 0 0<br />
2 1 0 0<br />
2 0 1 0<br />
2 1 1 0<br />
3 0 0 1<br />
4 1 0 1<br />
4 0 1 1<br />
4 1 1 1</p>
<p>Mein Ziel ist nun das Skalarprodukt von jedem (binären!) Zeilenvekor aus B (also ohne die erste Spalte) mit demjenigen Zeilenvektor aus A zu berechnen, dessen Zeilenindex gegeben ist durch die natürliche Zahl aus der ersten Spalte der B-Matrix.</p>
<p>Im Beispiel:<br />
(0 0 0) aus A multipliziert mit (0 0 0) aus B, weil die 1 in der ersten Spalte in der ersten Zeile nur einmal vorkommt. Dann (1 0 0) mal (1 1 0) sowie (0 1 0) mal (1 1 0) und (1 1 0) mal (1 1 0) weil die Zwei in drei Zeilen von B steht und diese Zwei den zweiten Zeilenvektor aus A repräsentiert. Dann das selbe Vorgehen einmal für die Drei und zuletzt Drei mal für die Vier.</p>
<p>Am Ende möchte ich so eine (m x p)-Matrix C erhalten, in der alle diese Skalarprodukte stehen.</p>
<p>Mein Hauptproblem ist nun, dass ich konzeptionell nicht weiss wie so etwas zu programmieren ist. Von Hand ist ganz klar was ich meine und wie das geht, aber wie programmiert man das?</p>
<p>Danke für die Hilfe und Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475303</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Fri, 13 Nov 2015 15:26:45 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Fri, 13 Nov 2015 15:37:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(int i = 0; i &lt; bRowCount; ++i) {
   int aIndex = bMatrix[i][0];
   int prod = std::inner_product(&amp;bMatrix[i][1], std::end(bMatrix[i]), &amp;aMatrix[aIndex]);
}
</code></pre>
<p>So in der Art. Je nach dem, welche Matrix-Klassen du benutzt, Boundary-Checks brauchst etc. noch beliebig anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475304</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Fri, 13 Nov 2015 15:37:55 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 07:07:31 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Dieser Code führt zu folgendem Fehler:</p>
<pre><code>error: no matching function for call to ‘inner_product(__gnu_cxx::__alloc_traits&lt;std::allocator&lt;int&gt; &gt;::value_type&amp;, std::vector&lt;int&gt;::iterator, __gnu_cxx::__alloc_traits&lt;std::allocator&lt;std::vector&lt;int&gt; &gt; &gt;::value_type&amp;)’
</code></pre>
<p>Was bedeuet dies?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475475</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Sun, 15 Nov 2015 07:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 07:32:46 GMT]]></title><description><![CDATA[<p>Mach halt ein <code>&amp;*</code> vor das <code>std::end</code> oder benutz so etwas wie <code>std::next(std::begin(bMatrix[i]), 1)</code> als ersten Parameter. Ungetestet.</p>
<p>Außerdem fehlt noch der Initialwert (0?). Wenn du fremden Code benutzt, musst du ihn auch verstehen. Dazu gehört auch, wenigstens mal die Referenz einer Standardfunktion anzugucken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475477</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 15 Nov 2015 07:32:46 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 07:54:43 GMT]]></title><description><![CDATA[<p>Deswegen frage ich hier ja nach Erklärung, denn offensichtlich weiss ich nicht wie der Code funktioniert.</p>
<p>Wie mich diese arrogante Pseudo &quot;Hilfe&quot; ankotzt....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475478</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Sun, 15 Nov 2015 07:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 08:45:30 GMT]]></title><description><![CDATA[<p>Pfft. Wenn du nicht einmal die Antworten vollständig liest, dann hilf dir doch alleine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475480</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 15 Nov 2015 08:45:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 08:53:22 GMT]]></title><description><![CDATA[<p>Wo habe ich denn bitte eine Antwort nicht vollständig gelesen?</p>
<p>Ich weiss weder wie das mit den Templates funktioniert, was überall in den Referenzen angegeben ist, noch weiss ich wie hier das &amp; und * zu interpretieren ist, obwohl ich gefühlt Tausend mal das Kapitel über Pointer in meinem Lehrbuch gelesen habe, noch verstehe ich die Syntax von inner_product und weisst du was mich am meisten ankotzt?! Wenn andere Leute etwas nicht kennen, dann nehme ich mir die Zeit und erkläre es richtig, ohne diesen süffisant überheblichen Ton in den &quot;Hilfen&quot;. Ich habe Physik studiert und wenn z.B. jemand etwas über Relativität oder QM wissen will, erlkäre ich das den Leuten und mach hier nicht einen auf arrogant und &quot;ist ja eh klar, mach halt xyz, wiel es ja so trivial ist....&quot;</p>
<p>Bei so etwas bekomme ich gut Lust einfach wie du sagst es alleine zu versuchen, zu scheitern, aber meine Hilfe dann auch auf Null zu setzen, wenn andere etwas wollen....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475481</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Sun, 15 Nov 2015 08:53:22 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 09:25:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Wo habe ich denn bitte eine Antwort nicht vollständig gelesen?</p>
</blockquote>
<p>Ich habe dir eine vollständige Antwort auf deine Frage gegeben und du nennst das Pseudo-Hilfe. In der Zeit bis zur Antwort hast du offensichtlich nicht einmal versucht, die Antwort nachzuvollziehen, denn selbst einfaches Ausprobieren, geschweige denn Nachschlagen der Funktionen, hätte viel länger gedauert.</p>
<blockquote>
<p>Ich weiss weder wie das mit den Templates funktioniert, was überall in den Referenzen angegeben ist, noch weiss ich wie hier das &amp; und * zu interpretieren ist, obwohl ich gefühlt Tausend mal das Kapitel über Pointer in meinem Lehrbuch gelesen habe, noch verstehe ich die Syntax von inner_product</p>
</blockquote>
<p>Warum ist deine Frage dann nicht, dass du Templates nicht verstehst, Pointer nicht verstehst, usw.?</p>
<p>Nein, du wolltest, dass dir jemand den Code, den jemand anderes für dich geschrieben hat, für dich zum laufen bringt. Wobei du offensichtlich nicht einmal versucht hast, die Funktion zu verstehen. Ob das aus Unwissen oder Faulheit geschah, können wir nicht wissen. Fakt ist, du hast uns einfach nur die Fehlermeldung serviert und gesagt: Macht mal für mich! Und wenn jemand dieses Verhalten beim Namen nennt, reagierst du wie eine beleidigte Leberwurst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475484</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 15 Nov 2015 09:25:55 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 09:28:55 GMT]]></title><description><![CDATA[<p>Was du mir hier unterstellst! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Ich habe diese Fehlermeldung gepostet mit Zitat: &quot;Was bedeuet dies?&quot; und erhoffte, dass mir jemand erklärt was dieser Fehler bedeutet und erklärt wie es dazu kommt.</p>
<p>Ich habe kein Interesse an fertigen Lösungen sondern will C++ lernen und was ich überhaupt nicht ab kann ist dieser Überheblichkeit und Arroganz hier.</p>
<p>Das wars für mich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475486</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Sun, 15 Nov 2015 09:28:55 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 09:49:32 GMT]]></title><description><![CDATA[<p>cpp_Jungspund schrieb:</p>
<blockquote>
<p>Ich habe diese Fehlermeldung gepostet mit Zitat: &quot;Was bedeuet dies?&quot; und erhoffte, dass mir jemand erklärt was dieser Fehler bedeutet und erklärt wie es dazu kommt.</p>
</blockquote>
<p>Du zeigst leidlich wenig Eigeninitiative. Du musst außerdem lernen, Fehlermeldungen wie diese selbst geschwind zu verstehen. Und selber zu recherchieren.</p>
<blockquote>
<p>Ich habe kein Interesse an fertigen Lösungen</p>
</blockquote>
<p>Aber wir reden von einem fast trivialen Problem, und du schreibst</p>
<blockquote>
<p>Mein Hauptproblem ist nun, dass ich konzeptionell nicht weiss wie so etwas zu programmieren ist. Von Hand ist ganz klar was ich meine und wie das geht, aber wie programmiert man das?</p>
</blockquote>
<p>Was für eine Art von Rat möchtest du? Außer fertigen Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475490</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 15 Nov 2015 09:49:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fallunterscheidungen Matrix und Skalarprodukt on Sun, 15 Nov 2015 09:54:35 GMT]]></title><description><![CDATA[<p>cpp_Jungspund schrieb:</p>
<blockquote>
<p>Was du mir hier unterstellst! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Ich habe diese Fehlermeldung gepostet mit Zitat: &quot;Was bedeuet dies?&quot; und erhoffte, dass mir jemand erklärt was dieser Fehler bedeutet und erklärt wie es dazu kommt.</p>
<p>Ich habe kein Interesse an fertigen Lösungen sondern will C++ lernen und was ich überhaupt nicht ab kann ist dieser Überheblichkeit und Arroganz hier.</p>
<p>Das wars für mich.</p>
</blockquote>
<p>Tja, manche wollen hier nur zeigen, wie toll sie sind. Aber man kann trotzdem von einigen dieser Leute lernen.<br />
Aber davon abgesehen, warum probierst Du nicht einfache Schleifen?</p>
<pre><code>#include &lt;array&gt;
#include &lt;cstddef&gt;
#include &lt;iostream&gt;
using namespace std;

int main() {
  constexpr size_t m = 4;
  constexpr size_t n = 3;
  constexpr size_t p = 8;

  array&lt;array&lt;int, n&gt;, m&gt; A {{ 
      {{0, 0, 0}}, 
      {{1, 1, 0}},
      {{0, 0, 1}},
      {{1, 1, 1}} 
    }};
  array&lt;array&lt;int, n+1&gt;, p&gt; B {{ 
      {{1, 0, 0, 0}}, 
      {{2, 1, 0, 0}},
      {{2, 0, 0, 0}},
      {{2, 1, 1, 0}},
      {{3, 0, 0, 1}}, 
      {{4, 1, 0, 1}},
      {{4, 0, 1, 1}},
      {{4, 1, 1, 1}}
    }};
  array&lt;array&lt;int, p&gt;, m&gt; C {{ {0} }}; 

  for(size_t im = 0; im &lt; m; ++im) {
    // hier die Matrixelemente von C aufbauen
    for(size_t ip = 0; ip &lt; p; ++ip) {
      auto index = B[ip][0] - 1;
      // usw. usw.. 

    }
  }

}
</code></pre>
<p>Scheint mir am klarsten und übersichtlichsten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2475492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2475492</guid><dc:creator><![CDATA[mittelspund]]></dc:creator><pubDate>Sun, 15 Nov 2015 09:54:35 GMT</pubDate></item></channel></rss>