Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 将运算结果存储在矩阵中

假设我想承担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编译功能,使其比以前没有那么生动,但是仍然: 如果可以,请始终向量化



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 12:33


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.