matlab - 在 Matlab 中执行此矩阵运算是否有更高效的方法
问题描述
我想在 Matlab 中做以下事情:给定一个矩阵 H,我想构建一个相同大小的矩阵 H*,使得 H*(:,i) 是下一列的总和(即 i+1 -> n ) 的 H。例如,如果 H 是
H =
2 4 7 14
3 5 11 -3
我期待 H* 是
25 21 14 0
13 8 -3 0
到目前为止,我已经完成了以下一段代码,但它涉及一个for
循环,所以我并不期望它非常有效(特别是,我的矩阵在我将使用的实际应用程序中会有大量的列)。
H_tilde=zeros(size(H));
for i=1:size(H,2)
H_tilde(:,i)=sum(H(:,i+1:size(H,2)),2);
end
有没有办法让它变得更好?
解决方案
cumsum
沿第 2 维使用选项'reverse'
,如下所示:
H_tilde = [cumsum(H(:, 2:end), 2, 'reverse') zeros(size(H,1), 1)];
推荐阅读
- javascript - 将值从后端 nodejs 传递到前端反应原生
- c++ - 如何在模板元编程中创建动态列表?
- visual-studio - 无法退出 VS 侧边栏搜索
- python - 当一个按钮被按下去一个网站链接。如何?
- .net - Xamarin.Forms 如何存储图像 - 最佳实践
- c - recv() 的字节数大于缓冲区中存储的数据量?
- flutter - 当其他下拉值在颤动中发生变化时,将下拉值重置为偏移量0
- javascript - 从 Node.js 中的 API 获取数据并发送到 Reactjs
- html - vuetify - 如何在 v-col 中居中元素
- python - Scrpay - ModuleNotFoundError:没有名为“http.client”的模块