2017-05-31 43 views
0

如何更改循環內'StartRow'和'EndRow'的值?在MATLAB中更改循環內的變量值

for k = 1:11 
filename = 'file.txt'; 
... 

startRow = 1422; %1564, 1706, 1848, 1990, 2132, 2274, 2416, 2558, 2700, 2842 
endRow = 1562; %1704, 1846, 1988, 2130, 2272, 2414, 2556, 2698, 2840, 2982 
... 

f=figure; 
plot(...); 

saveas(f,sprintf('fig%d.png',k)); 

回答

1

您可以在列表中的startRowendRow所有的值存儲前右for循環,然後遍歷列表來改變循環內這些變量的值。

startRowList = [1422, 1564, 1706, 1848, 1990, 2132, 2274, 2416, 2558, 2700, 2842]; 
endRowList = [1562, 1704, 1846, 1988, 2130, 2272, 2414, 2556, 2698, 2840, 2982]; 

for k = 1:11 
    filename = 'file.txt'; 
    ... 

    startRow = startRowList(k); 
    endRow = endRowList(k); 
    ... 

    f=figure; 
    plot(...); 

    saveas(f,sprintf('fig%d.png',k)); 
end 
+0

作品!謝謝! –

1

保持startRow和endRow在循環外部,並使用循環索引在循環內部調用它們。

startRow = [1422 1564, 1706, 1848, 1990, 2132, 2274, 2416, 2558, 2700, 2842] ; 
endRow = [1562 1704, 1846, 1988, 2130, 2272, 2414, 2556, 2698, 2840, 2982]; 
n = length(startRow) ; 
for k = 1:n 
    filename = 'file.txt'; 
    thestart = startRow(k) ; 
    theend = endRow(k) ; 
    ... 

... 

f=figure; 
plot(...); 

saveas(f,sprintf('fig%d.png',k)); 
end 
1
starts = [1422, 1564, 1706, 1848, 1990, 2132, 2274, 2416, 2558, 2700, 2842]; 
ends = [1562, 1704, 1846, 1988, 2130, 2272, 2414, 2556, 2698, 2840, 2982]; 

for k = 1:11 
    ... 
    startRow = starts(k); 
    endRow = ends(k); 
    ... 
end