【问题标题】:MATLAB: Conversion to char from cell is not possibleMATLAB:无法从单元格转换为 char
【发布时间】:2013-07-02 15:59:46
【问题描述】:

所以我有一个结构体 settings,它包含三个字段,averageValue、heightLabels 和 heights。

settings.averageValue = 7.5121 7.2742 7.4602 settings.heights = 105.1000 105.2000 105.3000

我正在使用以下代码循环这些内容:

for m = 1:length(settings.averageValue)
    settings.heightLabels(m) = {sprintf{'%.1f %s', settings.heights(m), 'm')};
end

但是,我收到错误消息“无法从单元格转换为字符。”。有什么想法吗?

【问题讨论】:

  • 您能否详细说明“好像它是一个变量”的含义?您想消除什么差异?
  • 我认为他们在谈论如果他们创建一个名为counter 的变量,那么输入counter 将给出输出counter = 1,而输入settings.counter 将给出输出@ 987654326@。 @user2540113 输出所说的内容不会有所作为。您可以将值保存到另一个变量中。像这样:counter = settings.counter.
  • 当您键入要查看的表达式时 MATLAB 显示的名称并不重要。 settings.counter 正是你想要的。如果您想以某种自动方式在值旁边打印名称,请单独解释该问题...
  • settings = struct('counter', counter);
  • Dan455 有。我认为使用结构来存储所有变量会更容易在文件和函数之间传递变量。这就是为什么我不想将值保存到另一个变量中,我想在结构中编辑它的值。让我感到困惑的是,使用结构而不是单独的变量会给我带来不同的结果。

标签: matlab variables data-structures


【解决方案1】:

好吧,我现在明白你的问题了。假设您有变量 A、B、C、D,您想将它们组合在一个结构变量中。以下是你的做法:

settings.A = A;
settings.B = B;
settings.C = C;
settings.D = D;

settings 现在是一个struct 变量,如果你想访问A,你把它称为:

disp(settings.A) %display A
settings.A = 10; %edit A
newA = settings.A; %assign A to a new variable

将设置传递给函数,随心所欲。

【讨论】:

  • 不完全是。我想要做的是将一堆变量移动到一个结构中,以便在函数和文件之间顺利传递它。我还希望能够编辑结构值,但将它们保留在结构中而不将它们保存到单独的变量中。这有意义吗?
  • 对不起,由于我缺乏 MATLAB 经验,我的问题具有误导性。我已经更新了我的问题。
【解决方案2】:

好吧,伙计们,我想通了。这是一个数据类型问题;我的结构字段应该是一个单元格,但它是一个字符串。比较尴尬。

我在创建结构体字段时用以下代码解决了这个问题:

settings.averageValue = {};
settings.heightLabels = {};

感谢您的帮助!

【讨论】:

  • 那么,您终于实现了您的目标?甜!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多