Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何使用MatLab将变量从一个函数传递到另一个函数?_Function_Matlab_Variables - Fatal编程技术网

Function 如何使用MatLab将变量从一个函数传递到另一个函数?

Function 如何使用MatLab将变量从一个函数传递到另一个函数?,function,matlab,variables,Function,Matlab,Variables,假设我有一个函数import\u data(),在这个函数中我创建了两个变量:response\u value和file\u to\u get file_to_get = uigetfile({'*.csv*'}, 'Select the CSV File',... '\\pfile01thn\bbruffey$\My Documents\analysis data\full files\... Raw Stats Data full file only'); response_values

假设我有一个函数
import\u data()
,在这个函数中我创建了两个变量:
response\u value
file\u to\u get

file_to_get = uigetfile({'*.csv*'}, 'Select the CSV File',...
'\\pfile01thn\bbruffey$\My Documents\analysis data\full files\...
Raw Stats Data full file only');

response_values = zeros(numel(C),numCols);
for i=1:numel(C)
    v = textscan(C{i}, '%s', 'Delimiter',',');
    v = str2double(v{1}(4:end));
    response_values(i,1:numel(v)) = v;
end
然后我需要将这些变量传递到另一个函数
MS\u Banding\u striking()

这怎么可能呢?(我现在正在使用globals,这是一种非常糟糕的做法。

类似

文件导入_data.m

function response_values, file_to_get = import_data()

file_to_get = uigetfile({'*.csv*'}, 'Select the CSV File',...
'\\pfile01thn\bbruffey$\My Documents\analysis data\full files\...
Raw  Stats Data full file only');

response_values = zeros(numel(C),numCols);
for i=1:numel(C)
    v = textscan(C{i}, '%s', 'Delimiter',',');
    v = str2double(v{1}(4:end));
    response_values(i,1:numel(v)) = v;
end
文件mainfunc.m

% Stuff before
[vals, filegot] = import_data()
MS_Banding_Streaking(filegot, vals)
% Stuff after

只需在同一个
.m
文件中编写这两个函数即可

function import_data()    
file_to_get = uigetfile({'*.csv*'}, 'Select the CSV File',...
'\\pfile01thn\bbruffey$\My Documents\analysis data\full files\...
Raw  Stats Data full file only');

response_values = zeros(numel(C),numCols);
for i=1:numel(C)
    v = textscan(C{i}, '%s', 'Delimiter',',');
    v = str2double(v{1}(4:end));
    response_values(i,1:numel(v)) = v;
end

MS_Banding_Streaking(response_values, file_to_get);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function MS_Banding_Streaking(resp_value, f2g)
% function body

除非我误解了这个问题,你能不能把你想要的变量分配为
input\u data()
的输出,然后按照我回答中的标准方式将它们传递给
MS\u Banding\u strinking
正在创建变量
response\u值
如果我正确理解您的示例,我应该能够将其添加到
MS\u Banding\u striking(response\u值)中
它应该可以工作。现在以这种方式运行我的代码,它告诉我变量
response\u value
未定义。@BenB.你应该调用
MS\u Banding\u strinking
inside
import\u data
,因为
response\u value
是在
import\u data
中创建的。注意,尽管这样做意味着除了此文件之外,您不能从任何地方调用
MS\u Banding\u striking
。这就是我看到的问题,因为我有一个主函数,它同时调用
import\u data()
MS\u Banding\u striking()
@BenB.实际上,您可以将
MS\u Banding\u striking
函数放在一个单独的文件中,只要它与主函数文件和
import\u data()文件位于同一目录中,就应该能够在主函数和
import\u data()中调用它
@BenB.:
ins
是一个通用变量名,以防导入数据函数需要输入数据…如果不需要,只需删除它,即
函数响应值,file\u to\u get=import\u data()
…哦,好吧,我确实有一些用于绘图的选项,但我记得他们认为我需要这个,哈哈。okay@BenB.-我修改了我的代码,以反映您不需要任何输入来输入\u数据的事实