Creating a growing list
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Saud Alfalasi
am 20 Dez. 2020
Kommentiert: Saud Alfalasi
am 20 Dez. 2020
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/466215/image.png)
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 Kommentare
Akzeptierte Antwort
per isakson
am 20 Dez. 2020
Bearbeitet: per isakson
am 20 Dez. 2020
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};
Weitere Antworten (1)
Image Analyst
am 20 Dez. 2020
Bearbeitet: Image Analyst
am 20 Dez. 2020
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.
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!