【问题标题】:Using num2str with matrices in Octave在 Octave 中使用 num2str 和矩阵
【发布时间】:2016-06-12 15:48:27
【问题描述】:

Octave 中的 num2str 函数存在问题。

我的代码

>> alpha = zeros(1,length(alpha));
>> legendInfo = zeros(1,length(alpha));
>> legendInfo(1) = num2str(alpha(1));

错误信息

错误:A(I) = X:X 的大小必须与 I 相同

我一直试图点击此链接无济于事:Link

更新:

根据建议,我实现了以下代码并收到以下错误消息:

>> labelInfo = cell(1,numel(alpha))
>> labelInfo{1} = num2str(alpha{1});

错误:矩阵不能用 {

索引

错误:评估参数列表元素编号 1

回答

通过一次调整,提供的答案是准确的:

  • alpha{1}(语法错误)
  • alpha(1)(正确的语法)

括号而不是花括号。

谢谢!

【问题讨论】:

    标签: matlab octave


    【解决方案1】:

    您已将legendInfo 初始化为一个与alpha 大小相同的数字数组。当您将 alpha(1) 转换为字符串时,它的长度可能超过 1 个字符(即 alpha(1) > 9),这显然不适合数组中的单个元素。

    length(num2str(10))
    %   2
    
    length(legendInfo(1))
    %   1
    

    此外,即使num2str(alpha(1)) 生成长度为 1 的字符串,它也会将其隐式转换为可能不是您想要的数字(它是 ASCII 表示)。

    legendInfo = zeros(1, numel(alpha));
    legendInfo(1) = num2str(1);
    %  49    0    0
    

    您可能需要一个元胞数组来保存图例信息,而不是数字数组,因为您将拥有不同长度的字符串。

    legendInfo = cell(1, numel(alpha));
    legendInfo{1} = num2str(alpha{1});
    

    如果您仔细查看已链接的帖子,您会发现他们使用大括号 {} 来执行赋值,而不是使用括号 () 表示他们正在创建一个元胞数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      相关资源
      最近更新 更多