OCTAVE: Loading and processing multiples files (32 files)
我需要同时加载32个文件(扩展名为.mat)并进行一些数学运算。因此,运行代码后,我希望有32个数学结果。
问题是我正在尝试的所有代码都只会加载第一个或最后一个文件。
我的文件名是:21 pcb 11_01.mat; 21 pcb 11_02 .... 21 pcb 11_32。我已经试过了:
因此,该代码仅显示工作空间中的最后一个文件。
我希望代码可以加载32个文件。
你能帮我吗?
- 加载文件会在工作区中创建一些变量,即文件中包含的变量,文件包含哪些内容?如果它们具有相同的变量名,则加载最后一个文件将覆盖以前的任何变量
-
您一次只能加载一个文件,因此该过程是加载文件,进行数学运算并移至下一个文件。或者,您可以一个接一个地加载所有32个文件,然后进行数学运算,但是正如@LuisMendo所述,如果*.mat文件中的变量具有相同的名称,则每个load操作都会覆盖它们。在这种情况下,您希望在每次load迭代时将数据存储在唯一命名的变量中。如果没有有关*.mat文件中内容的更多信息,就很难再说了。
-
感谢您的回答!它是Picoscope文件(示波器的一种)。因此,在每个文件中,都有相同的变量名(称为A),但是在每个文件中此变量的值都不同。
如果您的Picoscope文件都具有相同的长度(例如Lpico),那么这应该可以工作:
1 2 3 4 5 6 7
| Pico= NaN* ones(32,Lpico );
for k= 1: 32
filename= strcat(" 21 pcb 11_", sprintf(" %02d",i),".mat")
load(filename )
Lthisrun= length(A );
Pico (k, 1:Lthisrun )=A;
endfor |
如果它们的长度不同,则使Lpico与最长的A相同。较短范围的输出将用NaN的
填充。
- 谢谢你的帮助!但这没有用。在工作区中,文件名中仍然只有文件32(21 pcb 11_32),而不是分开的32个文件。
-
"工作区中"是什么意思?如果输入" whos";您应该会看到数组Pico,其尺寸为您为Lpico输入的长度为32。然后,例如要绘制第三个时间序列,您将获得曲线图(Pico(3,:))。数组Pico是存储每个单独文件的位置。