将file.bin的一部分保存在另一个flie.bin中

时间:2018-02-27 11:31:41

标签: matlab matlab-figure

我想剪掉signal.bin的一部分,然后将它(signal.bin的一部分)保存在w1.bin

我使用这些评论

f=fopen('signal.bin','rb');
v=fread(f,'float');

w1=v(0.93e8:1.3e8);
figure;plot(w1)

我想在w1.bin

中保存w1
t=fopen('w1.bin', 'w+');
fwrite(t,w1);
fclose(t);

我打开w1.bin并绘制它

x=fopen('w1.bin','rb');
z=fread(x,'float');

figure;plot(z);

但是情节(w1)和情节(z)不相同。 什么是问题?

1 个答案:

答案 0 :(得分:0)

你写的不是单身而是双重。 Matlab会将任何fread读取转换为64位浮点值(称为double)。正如它在这里所说 https://nl.mathworks.com/help/matlab/ref/fread.html

By default, numeric and character values are returned in class 'double' arrays.

您在matlab中读取了32位浮点值(称为single)。

将其更改为:

f=fopen('signal.bin','rb');
v=fread(f,'*single'); %keep it single
fclose(f);
pntrs = uint64([0.93e8,1.3e8]); %don't use floating point values as pointers
w1=v(pntrs(1):pntrs(2)); 
t=fopen('w1.bin', 'w+');
fwrite(t,w1);
fclose(t);