Creating a growing list
16 次查看(过去 30 天)
显示 更早的评论
for r = 1 : whatever
for c = 1 : whatever2
if Range > 50
Joey = {('Bi**h Changed'),r,c}
Hi,
I want joey to be a list, growing, currently it's overwriting at index one.
Quick fix please, I've seen long winded methods but I'm sure there's something very simple.
Example:
Joey = {Joey,('Bi**h Changed'),r,c} which is silly. Or having a counter, Joey {counter} = ect..... counter = counter +1, which is also silly.
0 个评论
采纳的回答
per isakson
2020-12-20
编辑:per isakson
2020-12-20
Add
Joey = cell(0);
before the loops and replace
Joey = {('Bi**h Changed'),r,c}
by
Joey(end+1:end+3) = {('Bi**h Changed'),r,c};
Silly or not is in the eyes of the beholder.
Or you might want
Joey{end+1} = {('Bi**h Changed'),r,c};
更多回答(1 个)
Image Analyst
2020-12-20
编辑:Image Analyst
2020-12-20
There are basically 2 ways that I know of and you listed them. I don't think they're silly. Using a counter is more efficient than appending (your first method). Using a table is even more efficient than a cell array. Even more efficient would be to allocate a large amount of empty cells - way more than you think you would need - then crop the array after the loop
Joey = cell(1000, 1)
counter = 1;
for r = 1 : whatever
for c = 1 : whatever2
if Range > 50
Joey(counter) = {('Bi**h Changed'),r,c}
counter = counter + 1;
end
end
end
Joey = Joey(1:counter); % Crop to however many we actually ended up needing.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!