matlab 文件格式如何转换呢?跪求大神指导

html-css015

matlab 文件格式如何转换呢?跪求大神指导,第1张

fidr=fopen('读文件名.txt','r')

fidw=fopen('写文件名.txt','w')

tr=fgetl(fidr)

while ischar(tr)

a=cellfun(@str2num,regexp(tr,'[\s:]','split'))

num=a(1)

datar=reshape(a(2:end),2,[])

dataw=[]

dataw(datar(1,:))=datar(2,:)

tw=sprintf('%g,',dataw)

tw=[tw(1:end-1) ' ' num2str(num)]

fprintf(fidw,[tw '\r\n'])

tr=fgetl(fidr)

end

fclose(fidr)

fclose(fidw)

如果你原有的文件每一行都是1 1:1 3:0.99539 4:-0.05889 这种格式

那么以上代码可以将每一行转为1,0,0.99539,-0.05889  1格式

第一第二行中,改为你原文件的文件名,和转格式后保存成的文件名

一般来说用dec2hex及hex2dec就可以。

ss='010600001388849C'

ssDec

=

hex2dec(ss)

ssHex

=

dec2hex(ssDec)

format

hex

disp(ssHex)

不过前提是你的机器能处理这么大的数。

我用小一点的数比如说ss='01600001388849C'测试的结果是没问题的,但是我的机器不能处理大于2^52的数,所以很抱歉无法完成你给出的这个例子。

====================================

补充回答:

拆分合并的方法试了试,

但是不知道你究竟要怎么用,也没有继续;希望你能把问题描述的更详细一点,特别是最终目的是干什么。

Matlab中关于大数处理有几个方法

1.调用maple内核运算,但是我的matlab版本中没有;

2.拆分合并,ss(1)~

ss(16)依次对应'010600001388849C'

中的各个位上的数,可以考虑用上。

3.换Ubuntu

Linux,可支持8G内存运算,也许可行。

4.实在没有适合方法,就只能改算法了。

很抱歉还是没搞定。

====================================

补充回答:

终于理解你的问题了,呵呵!

你试试下面这样的写法可不可以:

A

=

[1

06

0

0

19

136

132

156]

fwrite(s,

A,

'char',

'async')

其中,A是对应你要输入的'010600001388849C'

这个十六进制数的十进制表示,你用dec2hex(A)可以得到

01

06

00

00

13

88

84

9C.

有可能还有问题,不过你可以尝试在这个思路上再改改。

====================================

旋转步骤:

一 matlab函数:B = imrotate(A,angle,method);A是原始图像,angle是旋转角度,B为旋转后的图像;

二 使用method参数可以改变插值算法。 B = imrotate(A,angle,method,bbox)bbox参数用于指定输出图像属性:'crop': 通过对旋转后的图像B进行裁剪, 保持旋转后输出图像B的尺寸和输入图像A的尺寸一样。{'loose'}: 使输出图像足够大, 以保证源图像旋转后超出图像尺寸范围的像素值没有丢失。 一般上这种格式产生的图像的尺寸都要大于源图像的尺寸。