导航:首页 > 文件处理 > matlab压缩数组

matlab压缩数组

发布时间:2022-04-20 13:24:30

A. matlab如何改变一维数组长度

矩阵的长度可以用函数length(x)获得,维数可以用size(x)函数获得 这里你可以用语句a=my_sort(a);完成你想要的功能

B. matlab中矩阵缩小一倍

我不知道Matlab里面有没有相关的命令

不过,我觉得你可以自己编程解决。

首先,获得数组的大小。然后再将一半的数据重新赋值给一个新的数组。

参考代码如下:

clc;clear;
size_1=3;%行列式的维度,如果不想输入行列式也可自行修改
a=1:size_1^2;
%构建数组
a=reshape(a,size_1,size_1)
[x,y]=size(a);
%将数组的维度除以2后向正无穷取整
x=ceil(x/2);
y=ceil(y/2);
%取一半的数组
b=a(1:x,1:y)

其运行结果为:

a=

147
258
369


b=

14
25

C. matlab中如何将某一数组中数据进行打乱,有没有相应的函数,谢谢,在线等。

代码:
%这些是你的代码
formatlong
clc
clear
N=10000;
x=ones(N,3);
y=rand(N,3);
z=ones(N,3);
s1=2*cos(2*3.14159265/11)-1;
s2=2*cos(4*3.14159265/11)-fix(2*cos(4*3.14159265/11));
s3=2*cos(6*3.14159265/11)-fix(2*cos(6*3.14159265/11))+1;
fori=1:N
x(i,1)=i*s1-fix(i*s1);
x(i,2)=i*s2-fix(i*s2);
x(i,3)=i*s3-fix(i*s3);
end
%这个是我补充的代码
fori=1:size(x,2)
z(:,i)=x(randperm(size(x,1))',i);
end
如有用,请及时采纳!

D. 如何用MATLAB进行图像压缩

1、首先在电脑中双击matlab软件,使用语句:x=0:0.2:7*pi:创建一个一维数组,表示三维离散序列图的在x轴上的分布范围。

E. 关于matlab使用数组计算内存耗费太大,怎么解决

我建议在一开始就定义数组大小,这样可以减少内存的使用,同时加快计算速度,特别是数组较大的情况下,比如A=ones(n,1);for ii=1:n......end另外,在matlab里不推荐使用i,j作为循环变量,因为他们本身也是虚数单位。在有些情况下可能会造成混乱。

F. matlab数组

matlab数组是用D=[a b;c d]或D=[a,b;c,d]来表示。

举个例子:

a=ones(2,2,3)

也就是说a是有三个2x2的矩阵组成的。

那么a(:,:,1)表示第一个矩阵。以此类推。

数组
编辑

所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。

G. matlab 把一个整数拆成数组形式

x=123
x1=fix(123/100)
x2=mod(fix(123/10),10)
x3=mod(mod(123,100),10)
x=[x1,x2,x3]
fix函数用来取整,mod用来取余,聪明的你一看就明白啦

H. 关于matlab中数组的一些简单操作

S='This Is A Test.'
s1=S(1:5)
s2=fliplr(S)
s3=S;flag=s3<='z'&s3>='a';s3(flag)=s3(flag)-'a'+'A'
s4=sum(S<='z'&S>='a')

I. 图像压缩 MATLAB实现 如何解压缩一个被压缩过的图像 急急急

法对图像进行压缩,得到一组压缩编码,然后解码这组编码,得到一幅解压缩图像.对解码图像与原始图像求差值,得到一差值图像,然后对该差值图像进行适当的编码.对差值图像的编码与初级编码共同构成对原始图像的编码.这种方法需要选择合适的初级编码方法与差值编码方法,使得这两者相结合,可以得到一种综合性能较好的编码方法。
其定义如图。
%%%%%%%%%%%%%%

clear
tic
%Image1=imread('pic\cameraman.tif');
xianshi;
number=input(' input the number:');
Image1=suoxiao('pic\cameraman.tif',number);
[imagem imagen]=size(Image1);
Sr=4;Sd=8;
Rnum=(imagem/Sr)*(imagen/Sr);
Dnum=(imagem/Sd)*(imagen/Sd);
Image2=zeros(Dnum,Sr,Sr);
Image2=blkproc(Image1,[Sd/Sr,Sd/Sr],'mean(mean(x))');
%压缩image1为原来1/2
% there are no eight tranformation for simpleness
RBlocks=zeros(Rnum,Sr,Sr);
DBlocks=zeros(Dnum,Sd,Sd);
DBlocksRece=zeros(Dnum*8,Sr,Sr);
%%取R块,K记标号----------------------------------
for i=1:imagem/Sr
for j=1:imagen/Sr
k=(i-1)*imagen/Sr+j;
RBlocks(k,:,:)=Image1((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);

end
end
%取R块,K记标号----------------------------------
for i=1:imagem/Sd
for j=1:imagen/Sd
k=(i-1)*imagen/Sd+j;
m=Sr;n=Sr;
DBlocksRece(k,:,:)=Image2((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);
DBlocksRece(k+Dnum,:,:)=DBlocksRece(k,m:-1:1,:); % 行上下翻转===(x轴对称)
DBlocksRece(k+2*Dnum,:,:)=DBlocksRece(k,:,n:-1:1); % 列左右翻转 ==== y轴对称
DBlocksRece(k+3*Dnum,:,:)=DBlocksRece(k,m:-1:1,n:-1:1); % 先行翻,再列翻 旋转180度
DBlocksRece(k+4*Dnum,:,:)=reshape(DBlocksRece(k,:,:),Sr,Sr)'; % 关于y=-x对称
A=reshape( DBlocksRece(k+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(k+5*Dnum,:,:)=A(:,n:-1:1); % 关于y=x对称
DBlocksRece(k+6*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),90); % 逆时针旋转90度
DBlocksRece(k+7*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),270); % 逆时针旋转270度

DBlocks(k,:,:)=Image1((i-1)*Sd+1:i*Sd,(j-1)*Sd+1:j*Sd);
end
end
RandDbest=zeros(Rnum,1)+256^3;
RandDbests=zeros(Rnum,1);
RandDbesto=zeros(Rnum,1);
RandDbestj=zeros(Rnum,1);
for i=1:Rnum
x=reshape(RBlocks(i,:,:),Sr*Sr,1);
meanx=mean(x);
for j=1:Dnum*8
y=reshape(DBlocksRece(j,:,:),Sr*Sr,1);
meany=mean(y);
s=(x-meanx)'*(y-meany)/((y-meany)'*(y-meany));%计算s
o=(meanx-s*meany);%计算o
c=(x-s*y-o)'*(x-s*y-o);%距离
if (RandDbest(i)>c)&(abs(s)<1)
RandDbest(i)=c;
RandDbests(i)=s;
RandDbesto(i)=o;
RandDbestj(i)=j;%可以找到对应变换和D块
end
end
end
%iteration limit
toc
tic
m=8;%解码迭代次数
e=mean(mean(Image1));
Image3=e*ones(imagem,imagen);%解码初始图象
for L=1:m
Image4=blkproc(Image3,[Sd/Sr,Sd/Sr],'mean(mean(x))');

for i=1:imagem/Sr
for j=1:imagen/Sr
m=Sr;n=Sr;
k=(i-1)*imagen/Sr+j;
l=RandDbestj(k);
k1=mod(l-1,Dnum)+1;%第几个D
l1=(l-k1)/Dnum+1;%变换号
%R对应D在Image4的起始点
j1=mod(k1-1,imagen/Sd)+1;
i1=(k1-j1)/(imagen/Sd)+1;
%变换------------------------------------------------------------------------
DBlocksRece(k1,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
switch l1-1
case 0
DBlocksRece(l,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
case 1
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,:);
case 2
DBlocksRece(l,:,:)=DBlocksRece(k1,:,n:-1:1);
case 3
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
case 4
DBlocksRece(l,:,:)=reshape(DBlocksRece(k1,:,:),Sr,Sr)';
case 5
DBlocksRece(k1+3*Dnum,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
A=reshape( DBlocksRece(k1+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(l,:,:)=A(:,n:-1:1);
case 6
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),90);
case 7
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),270);
end
%变换结束--------------------------------------------------------------------
RBlocks(k,:,:)=RandDbests(k)*DBlocksRece(l,:,:)+RandDbesto(k);
%生成R---------------------------
Image3((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr)=reshape(RBlocks(k,:,:),Sr,Sr);%更新迭代图象
end
end
wucha=double(Image1)-Image3;%误差图

Ps1(L)=20*log10(255/(sqrt(mean(mean(wucha.^2)))))
PSNR=psnr(wucha)
figure
imshow(uint8(Image3))
end
toc
figure
wucha=uint8(wucha);
imshow(wucha)
figure
imshow(uint8(Image1)),title('原图');
save('sa.mat')
fangtu(wucha);%%%%分形主函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
子函数:1:
function b=suoxiao(filename,bili)
a=imread(filename);
a=double(a);
[m,n]=size(a);
i=1;
while i=m/bili
j=1;
while j=n/bili
k=mean(mean(a(bili*(i-1)+1:bili*(i-1)+bili,bili*(j-1)+1:bili*(j-1)+bili)));
b(i,j)=k;
j=j+1;
end
i=i+1;
end
%b=uint8(b);
size(b)
%imshow(b)
子函数2:
%clc
function fangtu(a)
J=a;
%计算灰度图象的直方图数据,a为如象数组
L=256; %灰度级
Ps = zeros(L,1); %统计直方图结果数据
nk=zeros(L,1);
[row,col]=size(a);
n=row*col; %总像素个数
for i = 1:row
for j = 1:col
num = double(a(i,j))+1; %获取像素点灰度级
nk(num) = nk(num)+1; %统计nk
end
end
%计算直方图概率估计
for i=1:L
Ps(i)=nk(i)/n;
end
figure;
subplot(3,1,1);imshow(J),title('误差图');
subplot(3,1,2),plot(nk),title('直方图(nk)');
subplot(3,1,3),plot(Ps),title('直方图(Ps)');
子函数3:
function PSNR=psnr(a)
[m,n]=size(a);
a=uint8(a);
a=double(a);
imagesize=m*n;
MSE=sum(dot(a,a))/ imagesize;
PSNR=10*log10(255^2/MSE);
%%%%%%%%%%%%%%%%%%%%%%
说明:
1、因为本程序时间长,FX中先选择图片的大小
2、编码与解码
3、做误差图和只方图
4:画出每次迭代的解码图象

J. MATLAB数据如何存成数组

一、可以把每次计算出的矩阵A保存到一个元胞结构Data中(如下图)

二、下次从Data中取矩阵,可以这么写A = Data{i} ;

三、元胞里的数据是按行连接的,可以用
xlswrite('d.xlsx',Data{:})
四、按列连接的,可以用
xlswrite('d.xlsx',cat(1,x{:}))

阅读全文

与matlab压缩数组相关的资料

热点内容
python解释器里如何换行 浏览:410
python编写格式 浏览:574
用python做出来的软件 浏览:469
服务器指示灯代表什么 浏览:702
做一个单片机销售需要知识 浏览:777
怎样去连接加密wifi 浏览:682
有什么app自带拍摄模板的 浏览:435
登录相亲网为什么要下载app呢 浏览:545
加密货币和主权货币撮合 浏览:683
哪里能学app 浏览:445
spline怎么看源码 浏览:18
桂妃app哪里下载 浏览:236
android代码格式化快捷键 浏览:829
如何判断服务器的硬盘 浏览:654
云服务器挑选顺序 浏览:887
卡银家平台源码 浏览:417
怎么样设置服务器的ip地址 浏览:900
泡沫APP在哪里下载 浏览:937
简述高级语言进行编译全过程 浏览:39
管家婆辉煌2加密狗挪到另一台电脑 浏览:760