簡體   English   中英

如何將兩個不同長度的向量相乘

[英]How to multiply two vectors with different length

假設我有兩個向量:

A = [1 2 3];

B = [1 2];

我需要一個類似於A*B乘法的函數來產生以下輸出:

[
  1 2 3
  2 4 6
]

似乎不允許使用A*BA*B'A.*BA*B東西,因為元素的數量不相同。

我設法做到這一點的唯一方法(我在MATLAB上很新)是使用ndgrid來制作兩個具有相同元素數量的矩陣,如下所示:

[B1,A1] = ndgrid(B, A);
B1.*A1

ans =
 1     2     3
 2     4     6

如果元素數量很大,這會具有良好的性能嗎? 在MATLAB中有更好的方法嗎?

實際上,我正在嘗試使用MATLAB解決以下問題:

t = [1 2 3]

y(t) = sigma(i=1;n=2;expression=pi*t*i)

然而,即使有更好的方法解決實際問題,了解我的第一個問題的答案也會很有趣。

您在談論外在產品 如果A和B都是行向量,則可以使用:

A'*B

如果它們都是列向量,則可以使用

A*B'

Matlab中的*運算符表示矩陣乘法 矩陣乘法的最基本規則是,第一個矩陣的列數必須與第二個矩陣的行數匹配。 假設我有兩個矩陣A和B,尺寸分別為MxN和UxV。 然后,我只能在以下條件下執行矩陣乘法:

A = rand(M,N);
B = rand(U,V);

A*B    % Only valid if N==U (result is a MxV matrix)
A'*B   % Only valid if M==U (result is a NxV matrix)
A*B'   % Only valid if N==V (result is a MxU matrix)
A'*B'  % Only valid if V==M (result is a UxN matrix)

還有四種可能的情況,但它們只是所示情況的轉置。 現在,由於向量只是一個只有一個非單維度的矩陣,因此適用相同的規則

A = [1 2 3]; % (A is a 1x3 matrix)
B = [1 2];   % (B is a 1x2 matrix)

A*B    % Not valid!
A'*B   % Valid.     (result is a 3x2 matrix)
A*B'   % Not valid!
A'*B'  % Not valid!

同樣,還有其他四種可能的情況,但是唯一有效的情況是B'*A ,它是A'*B的轉置,並產生2x3矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM