Function 从其他函数访问数组元素

Function 从其他函数访问数组元素,function,matlab,Function,Matlab,我写了一个matlab函数;现在,当我模拟它时,出现了以下错误 h(n) = (str.(n)); ???企图 参考场 非结构化阵列。; 我想不出来。有人能帮忙吗 功能控制(varargin) 语句h(n)有什么问题?我想把str元素存储在h(n)中。我还想将值从另一个函数传递给vibgyor。如何从其他函数调用它?变量str不是一个结构,它是一个字符串数组。 您可以按如下方式转换它 str = { 'violet'; 'indigo'; 'blue'; 'g

我写了一个matlab函数;现在,当我模拟它时,出现了以下错误

h(n) = (str.(n));
???企图 参考场 非结构化阵列。; 我想不出来。有人能帮忙吗

功能控制(varargin)


语句h(n)有什么问题?我想把str元素存储在h(n)中。我还想将值从另一个函数传递给vibgyor。如何从其他函数调用它?

变量str不是一个结构,它是一个字符串数组。 您可以按如下方式转换它

str =  {
    'violet';
    'indigo';
    'blue';
    'green';
    'yellow';
    'orange';
    'red';
    };

N = length(str);
h = zeros(N,6);

for n =1:N
    X=cell2mat(str(n));

    for m=1:length(X)
        h(n,m) = X(m);
    end;
end

h

如上所述,
str
不是一个结构,因此要引用第n个元素,只需删除此行上的点即可:

 h(n) = str(n);
但是,这会导致以下错误:

???将单元格转换为双精度单元格时发生以下错误:错误 使用==>double从单元格转换为double是不可能的

这是因为您将
h
初始化为零,并试图使其成为单元格数组。因此,您应该更改为以下内容:

str =  {
    'violet';
    'indigo';
    'blue';
    'green';
    'yellow';
    'orange';
    'red';
    };

N = length(str);
h = cell(N,1);
for n =1:N
    h(n) = str(n);
end
但是,如果您所做的只是将
h
分配给
str
为什么不跳过
for
循环,直接执行此操作呢

h = str;
h = str;