как удалить индекс массива из связанной ошибки в matlab

#matlab

#matlab

Вопрос:

вот мой код, в котором у меня есть одна ошибка, касающаяся выхода индекса массива из привязки. пожалуйста, помогите мне исправить это

 I = imread('E:degraded imagesvillage.jpg');
imshow(I)


I = im2double(I);
I = log(1   I);

M = 2*size(I,1)   1;
N = 2*size(I,2)   1;

sigma = 10;

[X, Y] = meshgrid(1:N,1:M);
centerX = ceil(N/2);
centerY = ceil(M/2);
gaussianNumerator = (X - centerX).^2   (Y - centerY).^2;
H = exp(-gaussianNumerator./(2*sigma.^2));
H = 1 - H;

imshow(H,'InitialMagnification',25)

H = fftshift(H);

If = fft2(I, M, N);
Iout = real(ifft2(H.*If)); ** here the code has error . ??? Error using ==> times Number of array dimensions must match for binary array op.**
 

Комментарии:

1. Вероятно, H и If не являются правильными размерами. Добавьте size (H) и size (If) прямо перед строкой, которая выдает ошибку, чтобы сначала узнать, каковы их размеры.

2. да, размер (h) = (617 * 819) и размер (если)= (617*819*3) .. как сделать их одинаковыми

Ответ №1:

H является 2-D, а If является 3-D. Вы можете использовать repmat H подмножество с или If . Я не знаю, какой из них подходит для вашей ситуации. Например,

 rempat( H, [1, 1, 3 ] ) .* If;
 

или

 H .* If(:,:,ind);  % ind is the index of the 2-D array you want to subset
 

Комментарии:

1. я хочу изменить размер H с 2d на 3d

2. @sheelumishra Затем используйте repmat , как в первом примере.