【问题标题】:How do you print an array if it has more than 2 index?如果它有超过 2 个索引,你如何打印一个数组?
【发布时间】:2021-05-08 16:55:54
【问题描述】:

这是我打印时的代码,打印时不会显示预期结果,我尝试将数组转换为字符串,但结果导致打印框。

c=0;
array1=[];
for r=1:1
    while c<=5
     value = "Enter value for index " + c + ":";
     array1(r,c+1)=input(value);
     c=c+1;
    end  
end


[maxval]= max(array1);
[index1] = find(ismember(array1, max(array1(:))));
[minval]= min(array1);
[index2] = find(ismember(array1, min(array1(:))));

fprintf("The highest value is %d located in index %d.\n", maxval,index1)
fprintf("The lowest value is %d located in index %d.", minval,index2)

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    MATLAB 遵循 base-1 索引方案,但如果您坚持使用 base-0 索引方法,您可以通过减去 1 来抵消 ismember() 函数检索到的值。下面我为数组大小添加了一些预分配,并将脚本缩减为仅包含 while 循环。

    clc;
    c = 1;
    Array_Size = 6;
    array1 = zeros(1,Array_Size);
    
    while c <= Array_Size
     value = "Enter value for index " + num2str(c-1) + ": ";
     array1(c)=input(value);
     c=c+1;
    end  
    
    [maxval] = max(array1);
    [index1] = find(ismember(array1, max(array1)));
    [minval] = min(array1);
    [index2] = find(ismember(array1, min(array1)));
    
    index1 = index1 - 1;
    index2 = index2 - 1;
    
    fprintf("The highest value is %d located in index %d.\n", maxval,index1);
    fprintf("The lowest value is %d located in index %d.\n", minval,index2);
    

    【讨论】:

    • 感谢您的评论,但是如果要打印多个索引,例如 index1 的值有 1 和 5,您将如何打印。这是我想达到的示例结果 Enter value for index 0:24 为索引 1 输入值:64 为索引 2 输入值:12 为索引 3 输入值:12 为索引 4 输入值:8 最大值为 64,位于索引 1。最小值为 12,位于索引 2 , 3. 另外,如果我发的这么晚,我很抱歉。
    猜你喜欢
    • 2022-11-30
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2012-12-09
    • 2018-10-17
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多