matlab如何将矩阵里重复的数值都用字符表示?
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/17 12:32:05
matlab如何将矩阵里重复的数值都用字符表示?
例如有一个矩阵4*4
A=[1 1 1 2
3 3 4 4
1 2 2 2
3 3 3 3]
我要将它转换为
A=[1 2r 2
3 r 4 r
1 2 2r
3 3r]
里面的r是重复符号,例如 1 2r 是指 1 1 1 ,3 3r 是指 3 3 3 3
例如有一个矩阵4*4
A=[1 1 1 2
3 3 4 4
1 2 2 2
3 3 3 3]
我要将它转换为
A=[1 2r 2
3 r 4 r
1 2 2r
3 3r]
里面的r是重复符号,例如 1 2r 是指 1 1 1 ,3 3r 是指 3 3 3 3
![matlab如何将矩阵里重复的数值都用字符表示?](/uploads/image/z/2138079-39-9.jpg?t=matlab%E5%A6%82%E4%BD%95%E5%B0%86%E7%9F%A9%E9%98%B5%E9%87%8C%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%80%BC%E9%83%BD%E7%94%A8%E5%AD%97%E7%AC%A6%E8%A1%A8%E7%A4%BA%3F)
你的矩阵是数值矩阵
如果要有字符'r',那么必须转为字符
每个单元中有时一个字符,有时两个字符
所以用字符矩阵还不够,还需要用cell矩阵
还有为难题就是根据这样的改法,原来矩阵元素的个数都会改变
像第一行原来4个元素,变换后变成3个元素
而第二行又保留4个元素,那么矩阵的列数就没法固定
由于矩阵结构的改变,完成这样的换会比较麻烦
或者你说说你这样变换矩阵的目的是什么?变换结果有什么应用?
再问: 我这样变换是为了将它代入到我需要的软件中去,这样子可以减少数据量(相对于我用的那个软件),主要应用于医学三维建模。
我也知道这种问题要把数值矩阵和字符串矩阵结合,而且每一行的矩阵个数都不一样。现在就是想找出些思路。
这位仁兄,用好的想法,可以相互交流一下~
再答: 转换后想在matlab里面保存矩阵,还比较麻烦
逐行处理,然后直接写到文件还比较方便,不需要储存长短不一的矩阵
再问: 嗯,谢谢了,不过我差不多弄出来了
再答: clc;clear;
A=[1 1 1 2
3 3 4 4
1 2 2 2
3 3 3 3];
[m n]=size(A);
for ii=1:m
d=[1 find(diff(A(ii,:)))+1];%不连续的第一个数字的位置
dd=diff([d m+1])-1; %到下个字符的长度-1
s=[]; %空字符串
for jj=1:length(d) %d和dd是长度相同的
s=[s,' ',num2str(A(ii,d(jj)))];%数字转为字符串
if dd(jj)>1
s=[s,' ',num2str(dd(jj)) 'r'];%重复超过1个,转为字符串 'xr'
elseif dd(jj)==1
s=[s,' r']; %重复1个转为字符串 'r'
end
end
fprintf('%s\n',s(2:end)); %打印一行到屏幕,容易改为到文件,2:end去掉第一个空格
end
显示结果是
1 2r 2
3 r 4 r
1 2 2r
3 3r
如果要有字符'r',那么必须转为字符
每个单元中有时一个字符,有时两个字符
所以用字符矩阵还不够,还需要用cell矩阵
还有为难题就是根据这样的改法,原来矩阵元素的个数都会改变
像第一行原来4个元素,变换后变成3个元素
而第二行又保留4个元素,那么矩阵的列数就没法固定
由于矩阵结构的改变,完成这样的换会比较麻烦
或者你说说你这样变换矩阵的目的是什么?变换结果有什么应用?
再问: 我这样变换是为了将它代入到我需要的软件中去,这样子可以减少数据量(相对于我用的那个软件),主要应用于医学三维建模。
我也知道这种问题要把数值矩阵和字符串矩阵结合,而且每一行的矩阵个数都不一样。现在就是想找出些思路。
这位仁兄,用好的想法,可以相互交流一下~
再答: 转换后想在matlab里面保存矩阵,还比较麻烦
逐行处理,然后直接写到文件还比较方便,不需要储存长短不一的矩阵
再问: 嗯,谢谢了,不过我差不多弄出来了
再答: clc;clear;
A=[1 1 1 2
3 3 4 4
1 2 2 2
3 3 3 3];
[m n]=size(A);
for ii=1:m
d=[1 find(diff(A(ii,:)))+1];%不连续的第一个数字的位置
dd=diff([d m+1])-1; %到下个字符的长度-1
s=[]; %空字符串
for jj=1:length(d) %d和dd是长度相同的
s=[s,' ',num2str(A(ii,d(jj)))];%数字转为字符串
if dd(jj)>1
s=[s,' ',num2str(dd(jj)) 'r'];%重复超过1个,转为字符串 'xr'
elseif dd(jj)==1
s=[s,' r']; %重复1个转为字符串 'r'
end
end
fprintf('%s\n',s(2:end)); %打印一行到屏幕,容易改为到文件,2:end去掉第一个空格
end
显示结果是
1 2r 2
3 r 4 r
1 2 2r
3 3r
matlab如何将矩阵里重复的数值都用字符表示?
matlab中如何将数值类型的矩阵转成字符类型的矩阵
请问matlab中如何创造一个重复的矩阵?
Matlab 如何随机生成不重复的随机矩阵
matlab里 如何将一个公式 【含有cos和exp】的数值输出.
如何在MATLAB中对多个不同维数的矩阵进行编号?比如说,想将10个2维矩阵(都用A表示吧)表示成一个3维矩阵(不妨称作
在matlab中怎样将一个灰度矩阵转换成正常的数值矩阵
求助Matlab关于将logical矩阵转为数值矩阵的问题
MATLAB矩阵里对于时间变量t的导数应该如何表示?
Matlab矩阵的表示
matlab 如何表示分块矩阵
matlab 中如何将一个i*j的矩阵中虚数元素都变为零