无法执行赋值,因为左侧的索引与右侧的大小不兼容。 出错 machine_learning (line 7) cdfData(i) = cdfread(filename, 'CombineRecords', true, 'ConvertEpochToDatenum', true);
时间: 2023-12-20 11:04:01 浏览: 102
这个错误通常是由于 `cdfread` 函数读取的数据量不同导致的。具体来说,`cdfread` 函数读取的数据量可能取决于 CDF 文件的大小,而不是固定的。这意味着对于不同的 CDF 文件,`cdfData` 结构体数组的大小可能会有所不同。
你可以尝试使用 `disp` 命令在循环内部输出每个 CDF 文件读取的变量数量,以确保它们是一致的。例如,你可以将以下代码添加到循环中:
```
filename = fullfile(folder, filenames{i});
cdfData = cdfread(filename, 'CombineRecords', true, 'ConvertEpochToDatenum', true);
fprintf('File %d: %d variables\n', i, numel(cdfData.Variables));
```
这将输出每个 CDF 文件读取的变量数量。如果你发现不同的 CDF 文件读取的变量数量不同,那么你可能需要重新设计 `cdfData` 结构体数组的结构,或者使用一个更灵活的数据结构来存储 CDF 数据。
另外,请注意,如果你在循环内部重新分配 `cdfData` 变量,它的大小可能会发生变化,这也可能导致左侧的索引与右侧的大小不兼容的错误。如果你需要重新分配 `cdfData` 变量,请确保使用 `struct` 函数或类似的方法来保持它的结构不变。例如,你可以将以下代码添加到循环之前:
```
cdfData = struct('Variables', [], 'GlobalAttributes', [], 'VariableAttributes', []);
```
这将创建一个空的 `cdfData` 结构体数组,它的大小和结构都不会在循环内部发生变化。
阅读全文