i реализовал его, используя fft в matlab и проверив гистограмму среднего значения вычисления fft и std, но также можно выполнить функцию
fa = abs(fftshift(fft(sharp_img)));
fb = abs(fftshift(fft(blured_img)));
f1=20*log10(0.001+fa);
f2=20*log10(0.001+fb);
figure,imagesc(f1);title('org')
figure,imagesc(f2);title('blur')
figure,hist(f1(:),100);title('org')
figure,hist(f2(:),100);title('blur')
mf1=mean(f1(:));
mf2=mean(f2(:));
mfd1=median(f1(:));
mfd2=median(f2(:));
sf1=std(f1(:));
sf2=std(f2(:));
Когда вы пишете команду wc -l < file1.txt > file1.txt
, ваша оболочка сначала прочитает команду целиком и перенаправит стандартный ввод, выводимый с / на file1.txt
.
Затем, когда файл открыт для записи с использованием >
, если файл существует, он будет перезаписан и будет создан пустой файл. затем процесс (ваш wc
) начнет выполнение и запишет его до конца выполнения.
Однако ваш wc -l
должен будет прочитать файл и сосчитать количество строк в нем, так как файл пуст (перезаписан), он просто поместит в него дамп:
0 file1.txt
Чтобы доказать это посмотрите, что происходит в режиме добавления, используя >>
$ cat file1.txt
a
b
b
$ wc -l file1.txt
3 file1.txt
$ wc -l file1.txt >> file1.txt
$ cat file1.txt
a
b
b
3 file1.txt
Содержимое вашего файла не повреждено, и wc
правильно считывает количество строк перед добавлением результата в файл.
Примечание:
В общем, никогда не рекомендуется писать и читать в одном и том же файле, за исключением случаев, когда вы точно знаете, что делаете. Некоторые команды имеют опцию inline
для изменения файла во время выполнения команды, и настоятельно рекомендуется использовать их, поскольку файл не будет поврежден, даже если команда вылетает в середине выполнения.
Попробуйте >>
в file1.txt
вместо >
. >>
будет добавляться к файлу в отличие от >
, перезаписывая весь файл. Попробуйте -
wc -l < file1.txt >> file1.txt
Это потому, что перенаправления имеют более высокий приоритет, чем другие команды. Здесь файл1 будет очищен перед выполнением каких-либо операций с ним