在MATLAB中绘图会以指数形式崩溃

时间:2017-07-12 12:44:17

标签: arrays matlab indexing

我在尝试绘制实验数据的频率响应时偶然发现了一个问题。我有幅度(21 * 101)的多维数组和频率扫描开始和结束值的数组。 (21 * 1)

此代码适用于以下数据:第一个单元格中的5667,第二个单元格中的5678等。但是它会像5.478e + 5和4.999e + 5这样的数据崩溃:

A = load('Amplitude.mat');
Amp = A.Amplitude;
Fs = load('Fs.mat')
Fe = load('Fe.mat')

for i = 1:1:21
    f1 = Fs(i):10:Fe(i);//column 21*1
    grid on  
    y1 = plot(f1,AmpA1(i,:));  
    hold on
end

f1安装在数组中(如非指数形式的数字)21 * 1成为单个值,这会导致错误:

  

指数超出矩阵维度。

我试图使用sprintf()来改变指数形式 - 没有帮助。 拜托,您能告诉我如何解决它吗?

要测试的文件

1 个答案:

答案 0 :(得分:2)

Fs = load('Fs.mat')
Fe = load('Fe.mat')

将变量FsFe定义为标量结构,其中各个mat文件中的变量作为字段加载。使用任何大于1的值索引到FsFe都会产生错误。

尝试改为

s = load('Fs.mat'); Fs = s.Fs;
s = load('Fe.mat'); Fe = s.Fe;

(这假设mat文件中感兴趣的变量分别命名为FsFe。)