Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
假设我想承担1到100(以度为单位)的罪。
我来自C语言,所以我的本能是在for循环中执行1到100的循环(这是我在Matlab中可以做的事情)。在矩阵/向量/数组中,我将存储sin(x),其中x是for循环的计数器。 我不知道如何在Matlab中执行此操作。我是否创建像 x = [1 .. 100]; 然后做 x[offset] = numberHere; 我知道“正确”的方式。对于加法等操作,您可以使用。+代替+,并使用sin等函数,我敢肯定您只是这样做 resultArray = sin(x); 我只想知道我可以用C方式完成,以防万一,因此我的问题就在SO上。 :) 回答: 正如其他人已经指出的那样,MATLAB中也有for循环。 help for 应该为您提供有关其工作原理的一切。与C的区别在于循环可以遍历对象,而不仅仅是整数: objects = struct('Name', {'obj1', 'obj2'}, 'Field1', {'Value1','Value2'}); for x = objects disp(sprintf('Object %s Field1 = %d', x.Name, x.Field1)) end 该示例将输出: Object obj1 Field1 = Value1 Object obj2 field1 = Value2 这本可以做到的 for i=1:length(objects) x = objects(i); disp(sprintf('Object %s Field1 = %d', x.Name, x.Field1)) end 现在,我真正要说的是: 如果您曾经在MATLAB中编写for循环,请停下来想一想! 。对于大多数任务,您可以对代码进行矢量化处理,以使其使用矩阵运算和内置函数,而不是遍历数据。这通常会带来巨大的速度提升 。向量化代码的执行速度比循环代码快100倍,这并不罕见。最新版本的MATLAB具有JIT编译功能,使其比以前没有那么生动,但是仍然: 如果可以,请始终向量化 。 更多&回答... |
![]() |
![]() |