给定的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'};
答案 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复制向量N
和arrayfun 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