首页 文章

在Octave中使用num2str和矩阵

提问于
浏览
0

在Octave中遇到 num2str 函数问题 .

My code

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

Error Message

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

我一直试图按照这个链接无济于事:Link

Update:

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

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

错误:矩阵无法使用{error:evaluate参数列表元素编号1进行索引

ANSWER

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

  • alpha{1} (语法不正确)

  • alpha(1) (正确的语法)

Parantheses而不是花括号 .

谢谢!

1 回答

  • 4

    您已将 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});
    

    如果仔细查看已链接的帖子,您会看到他们使用大括号 {} 执行赋值而不是括号 () 表示它们正在创建单元格数组 .

相关问题