【问题标题】:Matlab. Index in position 2 exceeds array bounds (must not exceed 1)MATLAB。位置 2 的索引超出数组边界(不得超过 1)
【发布时间】:2021-01-19 07:44:41
【问题描述】:

我正在尝试将 FFT 应用于一组数据。我正在使用这个脚本

filepath = 'C:\Users\notmyname\Desktop\note.txt';
data = importdata(filepath);
dt=data(2,1)-data(1,1);
Fs=1/dt; 
L=length(data(:,2));
data_fft_full=abs(fft(data(:,2))/L); 
data_fft=data_fft_full(1:L/2+1); 
f=Fs*(0:(L/2))/L;  
figure
plot(f,data_fft)
xlabel('f (Hz)')

我收到错误“位置 2 的索引超出数组边界(不得超过 1)。

Untitled2 中的错误(第 5 行) L=长度(数据(:,2));

这是什么意思?笔记文件包含一列数字,每个数字之间有一个空格,

【问题讨论】:

  • 当您使用 data(:,2) 时,这意味着 data 是一个至少有 2 列的矩阵,而您说“便笺文件包含单列数字”。显然这是一个超出范围的索引
  • 所以用 1 替换 2 似乎可行。谢谢
  • 在修复它之前,你最好知道你或某人为什么写这个data(:,2)以及2是什么意思。为了使错误消息消失,我冒昧地建议使用data 而不是data(:,2)
  • 根据你的代码,我猜第一个和第二个数据是计算Fs,其余的都是另一种类型。所以用data(3:end)代替data(2,:)

标签: matlab fft


【解决方案1】:

如果您的 note.txt 是一个包含 单个 列数字的文件,它会给您索引错误,因为当您只有一个列时,您将调用第二列,在这种情况下,什么你可以做的是reshape()。我建议您检查note.txt 文件结构,因为代码很好。如果您无法解决,请将其附加到帖子中,我们可以检查它。
顺便说一句,note.txt 必须是这样的:
1 3
4 -5
6 2
...

干杯,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2022-01-06
    • 1970-01-01
    • 2021-11-22
    • 2015-11-08
    • 2020-12-18
    相关资源
    最近更新 更多