假设我有两个非常大的矩阵A(M-by-N)和B(N-by-M).我需要对角线A*B.计算完全A*B需要M*M*N次乘法,而计算它的对角线只需要M*N次乘法,因为不需要计算最终会在对角线之外的元素.
MATLAB是否实现了这种diag(A*B)自动优化和动态优化,或者我最好在这种情况下使用for循环?
如果我在Matlab中以矢量化方式包含子序列的起始和结束数字向量,那么如何创建序列呢?
示例输入:
A=[12 20 34]
B=[18 25 37]
Run Code Online (Sandbox Code Playgroud)
我想得到(间距清晰):
C=[12 13 14 15 16 17 18 20 21 22 23 24 25 34 35 36 37]
Run Code Online (Sandbox Code Playgroud) 我有两个向量
data vector: A = [1 2 2 1 2 6; 2 3 2 3 3 5]
label vector: B = [1 2 1 2 3 NaN]
Run Code Online (Sandbox Code Playgroud)
我想取所有具有相同标签的列的平均值,并将它们输出为按标签号排序的矩阵,忽略NaN.所以,在这个例子中我想要:
labelmean(A,B) = [1.5 1.5 2; 2 3 3]
Run Code Online (Sandbox Code Playgroud)
这可以通过像这样的for循环来完成.
function out = labelmean(data,label)
out=[];
for i=unique(label)
if isnan(i); continue; end
out = [out, mean(data(:,label==i),2)];
end
Run Code Online (Sandbox Code Playgroud)
但是,我正在处理包含许多数据点和标签的巨大数组.此外,此代码段将经常执行.我想知道是否有更有效的方法来做到这一点,而不是遍历每个单独的标签.