在Octave

时间:2016-06-12 15:48:28

标签: matlab octave

在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

ANSWER

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

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

Parantheses而不是花括号。

谢谢!

1 个答案:

答案 0 :(得分: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});

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