如果想通过for循环填充数据,如何编写以下matlab代码?

时间:2018-02-07 12:27:38

标签: matlab

给定的matlab代码想要使用" for loop"

来编写

我该怎么做?

    g = {'P1','P1','P2','P2','P3','P3','P4','P4'};

我想通过使用for循环来获取这些数据:

  for f_no=1:8
      g{f_no}=p(count);
      count=count+1;
  end

考虑p具有所有数据集,如何将其作为动态方式填入单元格'? 这将作为: g = {' P1',' P1',' P2',' P2',' P3',&# 39; P3'' P4'' P4'};

4 个答案:

答案 0 :(得分:3)

可能有很多方法可以做你要求的事情。这是2。

%Loop
g = cell(8,1);
for p=1:4
    g{p*2-1} = num2str(p,'P%d');
    g{p*2}   = num2str(p,'P%d');
end

%No Loop
g = cellstr(num2str(sort([1:4 1:4].'),'P%d'));

答案 1 :(得分:3)

count = 1;
for f_no=1:8
    g{f_no}=['P' num2str(count)];
    count=count+1;
end

给你

g = { 'P1' 'P2' 'P3' 'P4' 'P5' 'P6' 'P7' 'P8' }

OTOH,

count = 1;
for f_no=1:8
    g{f_no}=['P' num2str(floor(count))];
    count=count+.5;
end

给你

g = { 'P1' 'P1' 'P2' 'P2' 'P3' 'P3' 'P4' 'P4' }

答案 2 :(得分:2)

我的解决方案:

N = [1 2 3 4];
P = repelem(N,2);
result = arrayfun(@(x)sprintf('P%d',x),P,'UniformOutput',false);

它使用repelem function复制向量Narrayfun function中的每个数字,以便将每个数字转换为格式正确的字符串。

或者,您也可以使用未记录的函数sprintfc并更改最后一行,如下所示:

result = sprintfc('P%d',P)

在使用Matlab时,总是尝试尽可能地对代码进行矢量化,它会更好地执行sooooooo!

答案 3 :(得分:0)

for f_no=1:4
    g{2*f_no-1}=['P' num2str(f_no)];
    g{2*f_no}=['P' num2str(f_no)];
end

看起来'P1'表示p(1)单元格值,在这种情况下答案将是相同的

n=size(p);

for f_no=1:n
    g{2*f_no-1}=p(f_no);
    g{2*f_no}=p(f_no);
end