矩阵维度必须一致。 出错 Untitled6 (line 25) z_shifted(:,j) = repmat(z(:,j), length(y), 1) + repmat(y(:,j)', length(z(:,j)), 1); %����z_shifted
时间: 2023-08-18 18:07:08 浏览: 124
这个错误是由于在计算`z_shifted`时,使用了不同维度的矩阵进行运算导致的。具体来说,`z`是一个大小为`[Ny,Nr]`的矩阵,而`y`是一个大小为`[Ny,Nr]`的矩阵,但在计算`z_shifted`时使用了`z(:,j)`和`y(:,j)`,这两个矩阵的维度不相等。
为了解决这个问题,可以将`z`和`y`的维度交换,这样就可以使用`z(j,:)`和`y(j,:)`来计算`z_shifted`了。修改后的代码如下:
```
Nr=39;
Ny=22000;
t=linspace(0,39,Nr)';
t1=linspace(0,110,Ny)';
x=zeros(Ny,Nr);
z=zeros(Ny,Nr);
y=zeros(Ny,Nr);
z_shifted=zeros(Ny,Nr);
for i=1:Ny
y(i,:) = t;
if i>0 && i<=17*200
z(i,:) = 0;
elseif i>17*200 && i<=45*200
z(i,:) = (4/7*t - 9.7);
elseif i>45*200 && i<=65*200
z(i,:) = 16;
elseif i>65*200 && i<=93*200
z(i,:) = (-4/7*t + 53.1);
elseif i>93*200 && i<=110*200
z(i,:) = 0;
end
end
for j=1:Nr
x(:,j)=t1;
z_shifted(:,j) = repmat(z(:,j)', length(y(:,j)), 1) + repmat(y(:,j), 1, length(z(:,j))); %计算z_shifted
end
V=d2;
c=zeros(Nr,Ny);
for j = 1:Nr
for i = 1:Ny
c(j,i) = V((j-1)*(length(x))+i);
end
end
c=c';
h=surf(x,y,z_shifted,c);
set(h,'edgecolor','none');
xlabel('x/mm');
ylabel('y/mm');
zlabel('z/mm');
```
阅读全文