Matlab 如何执行三维傅里叶变换。。。。。。?

Matlab 如何执行三维傅里叶变换。。。。。。?,matlab,fft,Matlab,Fft,我试图使用fftn函数,但出现错误。我的代码是: clc; clear all; close all; % video=VideoReader('C:\Users\Public\Videos\Sample Videos\Wildlife.wmv'); video=read('C:\Users\Public\Videos\Sample Videos\gray\myvideo.avi'); f=fftn(v); i=imread('C:\Users\Public\Videos\Sample Vide

我试图使用
fftn
函数,但出现错误。我的代码是:

clc;
clear all;
close all;
% video=VideoReader('C:\Users\Public\Videos\Sample Videos\Wildlife.wmv');
video=read('C:\Users\Public\Videos\Sample Videos\gray\myvideo.avi');
f=fftn(v);
i=imread('C:\Users\Public\Videos\Sample Videos\gray\2.jpg');
f=fftshift(fftn(i));
figure,imshow(i);
figure,imshow(log(1+f),[]);
  • 当我对单个帧应用
    fftn
    时,我得到的结果与
    fft2
    函数相同

    i=imread('C:\Users\Public\Videos\Sample Videos\gray\2.jpg');
    f=fftshift(fftn(i));
    
  • 但是当我在
    video
    上应用
    fftn
    时,我得到一个错误:

  • ???“char”类型的输入参数的未定义函数或方法“read”
    在第行
    v=read('C:\Users\Public\Videos\Sample Videos\gray\myvideo.avi')

    当我取消对这行的评论时:

    video=VideoReader('C:\Users\Public\Videos\Sample Videos\Wildlife.wmv');  
    
    我得到这个错误:

    ???类型为“char”的输入参数的未定义函数或方法“VideoReader”

    我检查了
    fftn
    ifftn
    的算法,但没有找到解决方案

    问题:

  • 我应该如何使用
    fftn
    ifftn
    对视频序列应用3d FFT并仅从相位谱中获取帧
  • 此外,在对视频应用
    fftn
    功能之前,是否需要将rgb视频转换为灰色视频

  • 如果我理解正确,问题不在于“fftn”,而在于“read”和“VideoReader”功能。通常,“未定义函数或方法‘读取’类型为‘char’的输入参数”错误源于特定函数不在MATLAB路径或pwd中这一事实(之前已经回答过,您应该能够找到有关此问题的更多信息)

    不管怎样

    $which-全部读取

    $which-所有视频阅读器

    我会告诉你他们在哪里。如果你看到“'read'/'VideoReader'未找到”,那么它们就不存在了。 在这种情况下,检查它们是否位于matlab路径(>>路径)上的子目录中。 确保它不是私有目录,否则它们将无法通过cmd行访问(请参阅了解更多信息)

    分类后,检查是否正确加载,执行以下操作:

    $video=VideoReader('C:\Users\Public\Videos\Sample Videos\wildren.wmv')

    $get(视频)


    干杯

    如果这是MATLAB,请将您的问题标记为MATLAB。是的,我正在用MATLAB编写代码。先生,您能帮我找出上述错误的解决方案吗。。。。??感谢您的错误消息表明您加载数据的方式有问题。请确保加载数据成功。您使用的是哪个版本的Matlab?非常感谢您的建议。。。。。现在我已经做了以下更正。1.我没有直接在视频上应用fftn,而是将其转换为帧序列,然后将其存储在aaray“i”中,使其正常工作。对于t=1:t f1=read(视频,t);f2=RGB2灰色(f1);%将色框转换为灰色I(:,:,I)=f2;完fftn(I);