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
insideimport\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数据的事实