【发布时间】:2021-11-20 04:35:19
【问题描述】:
所以我不得不在 Matlab 中编写一个程序来手动计算两个函数的卷积。我写了这段简单的代码,我知道可能没有那么优化:
syms recP(x);
recP(x) = rectangularPulse(-1,1,x);
syms triP(x);
triP(x) = triangularPulse(-1,1,x);
t = -10:0.1:10;
s1 = -10:0.1:10;
for i = 1:201
s1(i) = 0;
for j = t
s1(i) = s1(i) + ( recP(j) * triP(t(i)-j) );
end
end
plot(t,s1);
我有一个核心 i7-7700HQ 和 32 GB 的 RAM。 Matlab 存储在我的 HDD 上,而我的 Windows 存储在我的 SSD 上。问题是这个简单的代码至少需要 20 分钟才能运行。我把它放在一个部分中,我不运行整个代码。 Matlab 只占用了我 18% 的 CPU 和 3 GB 的 RAM 来完成这项任务。我认为这可能就足够了,我不知道。但我不认为应该花那么长时间。
我做错什么了吗?我搜索了如何增加Matlab的RAM限制,我发现它没有限制,需要多少。不知道能不能增加它的CPU使用率。
有没有办法让事情变得更快一点?我的作业中有 6 或 7 个这样的 for 循环,如果我运行整个实时脚本,这将需要很长时间。提前感谢您的帮助。
(另外,它突出显示了当前正在运行的那段代码。它是for循环,外面的那个被突出显示)
【问题讨论】:
-
2 个问题。 1) 卷积在傅立叶空间中进行,速度快。 2)符号数学非常慢。您似乎正在尝试使用符号函数进行数字数学运算,这既令人困惑又低效
-
@AnderBiguri 我刚开始学习 Matlab,这是我的第一个作业,所以我知道我在代码中遇到了一些重大问题,哈哈。感谢您的评论。我会搜索数字数学的东西,我之前在搜索中看到过,但并没有真正关注它们。
标签: performance matlab