错误使用imwrite,问题出在哪了吗

nEllipses=1000
nCircles=1000
nBits=32
maxAngle=pi/4
rangeA=[0.5,1]
rangeB=[1,2]
maxThick=3.0
tic
[s,t]=GenerateEllipses(rangeA,rangeB,maxAngle,maxThick,nEllipses,nCircles,nBits)
toc
cd 'E:\Matlab2021b\file\Ellipses'
kAdd=10^ceil(log10(nEllipses+nCircles))
for k=1:length(s)
imwrite(s{k,2},sprintf('Ellipse%d.jpg',k+kAdd))
end
save('Type','t')
cd ..\

报错截图一下,还有代码用插入代码的方式,不然不方便看

插入的GenerateEllipses.m代码如下:
function [d,v]=GenerateEllipses(a,b,phi,t,n,nC,nP)
nE=n+nC
d=cell(nE,2)
r=0.5*(mean(a)+mean(b))*rand(1,nC)+a(1)
a=(a(2)-a(1))rand(1,n)+a(1)
b=(b(2)-b(1))rand(1,n)+b(1)
phi=phi
rand(1,n)
cP=cos(phi)
sP=sin(phi)
theta=linspace(0,2
pi)
c=cos(theta)
s=sin(theta)
m=length(c)
t=0.5+(t-0.5)*rand(1,nE)
aMax=max([a(:);b(:);r(:)])

for k=1:nC
d{k,1}=r(k)[c;s]
end
for k=1:n
d{k+nC,1}=[cP(k),sP(k);-sP(k),cP(k)]
[a(k)*c;b(k)*s]
end

v=zeros(1,nE)
v(1:nC)=1

运行报错是这样的

img

从你的代码来看,你的s应该是一个单元体的数据,不是图像。而imwrite是将图片写入指定的位置,而你这里的输出值是数据,不是jpg或者png形式,因此使用imwrite会报错,应改为xlswrite,你可以改了试一下