StartMeasuring=randi([10 30],1,10);
lenDepth = length(StartMeasuring); % numel is preferred
Depth = NaN(lenDepth,31);
for ii = 1:lenDepth
Depth(ii,1:StartMeasuring(ii)+1) = StartMeasuring(ii):-1:0;
end
Индексирование по единственному числу, как вы это делали изначально, не удивительно, что единственный элемент матрицы. Вместо этого индексируйте в строку как одно число, позволяя ему заполнить все столбцы на основе выражения. Подробнее об индексации в этом замечательном посте .
Также размер StartMeasuring(ii):-1:0
является случайным между 30 и 1, что означает, что вы должны хранить его на основе его текущей длины, которая в вашем случае (целые числа) задается как StartMeasuring(ii)+1
.
Рисунок, показывающий imagesc(Depth)
:
![enter image description here](https://i.stack.imgur.com/oSiZv.png)
Обратите внимание, что я изменил несколько других вещей:
len
- это Python, а не MATLAB. Используйте length
или, предпочтительно, для 1D массивов numel
- пробелы вокруг оператора присваивания
=
делают для лучшей читаемости
i
и j
являются мнимыми единицами , и их обычно не используют в качестве имен переменных в MATLAB.