函数如何处理内存使用情况?

时间:2015-08-29 12:58:56

标签: matlab function memory

当您在MATLAB中使用function时,您只能在工作空间中输出该函数,并且不会显示可能在该函数体中创建或使用的所有其他变量。我想知道function是如何工作的?它是否清除了内存中的所有其他变量并只保存输出?

1 个答案:

答案 0 :(得分:1)

function就像一个小而孤立的编程环境。在前端插入输入(例如变量,字符串,名称 - 值对等)。函数完成后,只有输出可用,丢弃所有临时创建的变量。

function [SUM] = MySum(A)
    for ii = 1:length(A)-1
        SUM(ii) = A(ii)+A(ii+1);
        kk(ii) = ii;
    end
end

>> A=1:10
>> MySum(A)

此代码只为输入数组A添加两个连续值。请注意,存储在kk中的迭代编号不会输出,因此在函数完成后会被丢弃。在MATLAB中kk(ii) = ii;将加下划线橙色,因为它可能未使用'。

假设您还要保留kk,只需将其添加到功能输出中:

function [SUM,kk] = MySum(A)

并保持其余部分相同。

如果您有大型变量,您只使用某个点并希望它们在函数运行时不会堵塞您的内存,请使用clear

function [SUM] = MySum(A)
    for ii = 1:length(A)-1
        SUM(ii) = A(ii)+A(ii+1);
        kk(ii) = ii;
    end
clear kk
end