我在Matlab中编写了一个主函数,该函数调用了其他函数,每个函数都会在新图中生成图形。尽管每个函数产生不同的图(不同的颜色,子图的数量等),但它们都具有某些特征(字体,字体大小,线宽等)。
为了使修改所有MATLAB图形的上述共享参数更加容易,我在主函数的序言中定义了如下结构变量:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body onload="rvalue()">
<div id="container">
<div class="box" ondrop="drop(event)" ondragover="allowDrop(event)" id="10">
<p name="values"></p>
</div>
<div class="box" ondrop="drop(event)" ondragover="allowDrop(event)" id="11">
<p name="values"></p>
</div>
<div class="box" ondrop="drop(event)" ondragover="allowDrop(event)" id="12">
<p name="values"></p>
</div>
</div>
<div class="box002" draggable="true" ondragstart="drag(event)" id="2">
<img src="" draggable="true" id="slide" style="width:30px; height:30px; border-radius: 50%;" border="rounded"/>
</div>
</body>
,对于其他字段,依此类推。当我以这种方式调用函数时(提供结构作为输入):
var.font = 'Arial Unicode MS';
var.fontsize = 13;
var.interpreter = 'none' ;
一切正常,功能将功能应用于每个图形。但是,如果我尝试使用varargin向函数提供可变数量的输入,则采用这种方式
function plot1( var , ... )
fig = gcf
fig.Position(3) = var.Position3
fig.Position(4) = var.Position4
end
系统提示以下错误消息“来自非结构数组对象的结构内容引用”。
答案 0 :(得分:1)
您对单元格数组的索引错误(这很容易做到)。
( )
为您提供了单元格输出-即您的temp
是1x1单元格,其中包含结构。 { }
才能提取单元格数组的内容。 修复:使用大括号:
temp = varargin{1};
我有时将单元格数组视为一组框,因为每个元素(在此类推中为“框”)基本上都可以包含任何内容。要提取框的子集,请使用圆括号。要提取框的内容,请使用花括号。这个类比也扩展到表,在表中符号是一致的。
以下是一些关于为单元格建立索引的文档,其中差异的详细说明:
https://uk.mathworks.com/help/matlab/matlab_prog/access-data-in-a-cell-array.html