Выполнил функцию сглаживания на матрице, но теперь только совпадающие индексы дают значения - PullRequest
0 голосов
/ 03 июля 2019

У меня есть матрица 1000x1000x50, и я выполнил функцию для каждого вектора в третьем измерении в цикле (1 000 000 векторов, 50 элементов в длину). Когда я пытаюсь просмотреть какой-либо конкретный элемент, где m = n, т.е. (1000, 1000, 40), отображается ненулевое значение. Однако, когда я пытаюсь просмотреть элемент, где m = / = n, то есть (1000, 1001, 40), возвращается только 0. Я знаю, что (1001,1001,40) имеет ненулевое значение, и я знаю, что исходная матрица имела ненулевой элемент в (1000,1001,40).

Вот цикл, который я использовал:

mymatrix_new = zeros(size(mymatrix));
for i=1:length(mymatrix)
    mymatrix_new(i,i,:) = wdenoise(squeeze(mymatrix(i,i,:)));
end

Для значений, которые отображаются, результат, который я ожидал, - сглаженный сигнал. Я просто не понимаю, почему некоторые элементы, отличные от нуля, отображаются как ноль, когда индексы m и n не идентичны.

1 Ответ

2 голосов
/ 03 июля 2019

Вы выполняете итерацию и обновляете только те ячейки, которые имеют m == n. Это происходит потому, что вы используете один цикл for. Все остальные значения не посещаются и никогда не обновляются, поэтому они остаются равными нулю.

Если вы посмотрите на свою петлю:

for i=1:length(mymatrix)

На первой итерации i = 1, и она обновится:

mymatrix_new(1,1,:) = wdenoise(squeeze(mymatrix(1,1,:)));

Во второй итерации i = 2, и она обновится:

mymatrix_new(2,2,:) = wdenoise(squeeze(mymatrix(2,2,:)));

Как видите, вы никогда не обновите mymatrix_new (1, 2) или любую другую ячейку, кроме тех, которые имеют m == n == i

Вам нужно использовать два вложенных цикла, чтобы вы обновляли все комбинации i и j

mymatrix_new = zeros(size(mymatrix));
for i=1:length(mymatrix)
    for j=1:length(mymatrix) % Here it assumes the matrix is a square
        mymatrix_new(i,j,:) = wdenoise(squeeze(mymatrix(i,j,:)));
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...