#matlab #matrix
#matlab #матрица
Вопрос:
Я хочу создать «перемещающуюся сетку» MATLAB. На самом деле, мне пришлось выбрать другую команду MATLAB вместо того, linspace
чтобы строить свою сетку для любой k
. Возможно ли это с помощью команды MATLAB?
for k=1:5
a=0;
b(k)=k.*3;
x=linspace(0,b(k),10);
y=linspace(0,30,10);
for z=1:length(x)
for t=1:length(y)
A(z,t,k)=x(z).*exp(-y(t));
end
end
end
Спасибо за любую помощь,
Комментарии:
1. Какую проблему вы пытаетесь решить? Вы сказали, что, возможно,
linspace
это неуместно, но какова цель этого скрипта matlab?2. Я хочу использовать для разных k разные сетки. В моем примере выше я попытался использовать для k = 1 сетку между 0<x<b (1) и для k = 2 0<x<b (2) и т.д. Для простоты я выбрал фиксированную сетку на y .
Ответ №1:
X = linspace(0,3,10);
XX(1,:,:) = bsxfun(@times,X,(1:5)')';
Y = exp(-linspace(0,30,10));
B = bsxfun(@times,Y',XX);
B = permute(B,[2,1,3]);
Ответ №2:
Ваш текущий код работает нормально, поэтому я не уверен, в чем вопрос… Вот немного более простая реализация:
b = (1:5).*3;
A = zeros(10,10,5);
for k=1:5
[X,Y] = ndgrid(linspace(0,b(k),10), linspace(0,30,10));
A(:,:,k) = X.*exp(-Y);
end
Если вы также хотите, чтобы y-пределы также изменялись, процесс аналогичен; у вас будет два цикла, а результатом A
будет 4D-матрица